侧边栏壁纸
  • 累计撰写 15 篇文章
  • 累计创建 23 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Let's Encrypt 简化版证书申请脚本-支持多域名配置,自动更新等需求

漫辰夕
2025-07-21 / 0 评论 / 0 点赞 / 11 阅读 / 12106 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2025-07-21,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Let's Encrypt 证书申请脚本

这是一个简化的Let's Encrypt证书申请脚本,支持多域名配置和交互式菜单选择。

功能特性

  • 支持多域名证书申请

  • 交互式菜单选择,可单独处理特定域名

  • 自动创建webroot验证目录

  • 自定义证书文件命名

  • 详细的日志记录

  • 兼容旧版本配置格式

配置文件说明

配置文件 config.json 支持以下格式:

{
    "domains": [
        {
            "domain": "mancxi.cn",
            "email": "admin@mancxi.cn",
            "webroot_path": "/var/www/halo",
            "certbot_path": "/usr/bin/certbot",
            "cert_dir": "/etc/letsencrypt/live",
            "download_dir": "/var/www/halo",
            "cert_files": {
                "key_name": "mancxi.cn.key",
                "pem_name": "mancxi.cn.pem"
            }
        },
        {
            "domain": "file.mancxi.cn",
            "email": "admin@mancxi.cn",
            "webroot_path": "/var/www/Clou",
            "certbot_path": "/usr/bin/certbot",
            "cert_dir": "/etc/letsencrypt/live",
            "download_dir": "/var/www/Clou",
            "cert_files": {
                "key_name": "file.mancxi.cn.key",
                "pem_name": "file.mancxi.cn.pem"
            }
        }
    ],
    "auto_renew_days": 30,
    "log_file": "letsencrypt.log"
}

使用方法

  1. 确保已安装certbot:

    sudo yum install epel-release
    sudo yum install certbot
  2. 确保证书的webroot目录存在且有写入权限:

    sudo mkdir -p /var/www/Clou
    sudo chown -R www-data:www-data /var/www/Clou
    
  3. 运行脚本:

    python3 letsencrypt_simple.py
    
  4. 根据菜单提示选择操作:


菜单界面示例

==================================================
Let's Encrypt 证书申请工具
==================================================
请选择要处理的域名:
0. 处理所有域名
1. mancxi.cn (下载到: /var/www/halo)
2. file.mancxi.cn (下载到: /var/www/Clou)
q. 退出
--------------------------------------------------
请输入选择 (0-2 或 q): 

证书文件

脚本会自动下载以下证书文件到指定的下载目录:

mancxi.cn

  • mancxi.cn.key - 私钥文件

  • mancxi.cn.pem - 证书链文件

file.mancxi.cn

  • file.mancxi.cn.key - 私钥文件

  • file.mancxi.cn.pem - 证书链文件

日志

所有操作日志会记录到 letsencrypt.log 文件中,同时也会在控制台显示。

注意事项

  • 确保域名已正确解析到服务器IP

  • 确保webroot目录可以通过HTTP访问

  • 确保防火墙允许80端口访问(用于域名验证)

  • 脚本会自动创建 .well-known/acme-challenge 目录

  • 可以单独处理特定域名,避免影响其他域名的证书



SSL证书自动更新脚本

这是一个自动检查和更新SSL证书的脚本,当证书剩余天数少于指定天数时自动更新。

功能特性

  • 自动检查证书剩余天数

  • 支持多域名配置

  • 守护进程模式,持续监控

  • 单次检查模式

  • 指定域名检查

  • 详细的日志记录

  • 自动下载更新后的证书文件

使用方法

1. 基本使用

# 检查所有域名,默认3天阈值
python3 auto_renew_ssl.py

# 指定最小剩余天数
python3 auto_renew_ssl.py --min-days 7

# 检查指定域名
python3 auto_renew_ssl.py --domain file.mancxi.cn

# 使用自定义配置文件
python3 auto_renew_ssl.py --config my_config.json

2. 守护进程模式

# 启动守护进程,每小时检查一次
python3 auto_renew_ssl.py --daemon

# 自定义检查间隔(30分钟)
python3 auto_renew_ssl.py --daemon --interval 1800

# 自定义最小剩余天数
python3 auto_renew_ssl.py --daemon --min-days 5 --interval 7200

3. 设置为系统服务

  1. 修改服务文件路径:

    # 编辑 ssl-auto-renew.service 文件
    # 将 /path/to/your/script/directory 替换为实际路径
    
  2. 安装服务:

    sudo cp ssl-auto-renew.service /etc/systemd/system/
    sudo systemctl daemon-reload
    sudo systemctl enable ssl-auto-renew.service
    sudo systemctl start ssl-auto-renew.service
    
  3. 管理服务:

    # 查看服务状态
    sudo systemctl status ssl-auto-renew.service
    
    # 查看日志
    sudo journalctl -u ssl-auto-renew.service -f
    
    # 停止服务
    sudo systemctl stop ssl-auto-renew.service
    
    # 重启服务
    sudo systemctl restart ssl-auto-renew.service
    

命令行参数

参数

说明

默认值

--config

配置文件路径

config.json

--min-days

最小剩余天数

3

--daemon

运行守护进程模式

False

--interval

检查间隔(秒)

3600

--domain

指定域名

日志文件

  • 脚本日志:ssl_renew.log

  • 系统服务日志:journalctl -u ssl-auto-renew.service

工作流程

  1. 检查证书剩余天数:使用 openssl 命令检查证书过期时间

  2. 判断是否需要更新:如果剩余天数少于指定阈值,则开始更新

  3. 更新证书:使用 certbot 强制更新证书

  4. 下载证书文件:将更新后的证书文件复制到指定目录

  5. 记录日志:详细记录所有操作过程

示例输出

2024-01-15 10:00:00 - INFO - 开始检查所有域名证书,最小剩余天数: 3 天
2024-01-15 10:00:01 - INFO - 检查第 1/2 个域名
2024-01-15 10:00:01 - INFO - 检查域名: mancxi.cn
2024-01-15 10:00:02 - INFO - 域名 mancxi.cn 证书剩余天数: 45 天
2024-01-15 10:00:02 - INFO - 域名 mancxi.cn 证书还有 45 天,无需更新
2024-01-15 10:00:02 - INFO - 检查第 2/2 个域名
2024-01-15 10:00:02 - INFO - 检查域名: file.mancxi.cn
2024-01-15 10:00:03 - INFO - 域名 file.mancxi.cn 证书剩余天数: 2 天
2024-01-15 10:00:03 - WARNING - 域名 file.mancxi.cn 证书剩余 2 天,少于 3 天,开始更新...
2024-01-15 10:00:05 - INFO - 域名 file.mancxi.cn 证书更新成功!
2024-01-15 10:00:06 - INFO - 成功下载 2 个证书文件到 /var/www/Clou
2024-01-15 10:00:06 - INFO - 域名 file.mancxi.cn 证书更新完成!
2024-01-15 10:00:06 - INFO - 所有域名检查完成! 成功处理: 2/2

注意事项

  • 确保 certbot 已正确安装

  • 确保有足够的权限访问证书目录

  • 确保域名解析正确且80端口可访问

  • 建议在生产环境中使用守护进程模式

  • 定期检查日志文件确保脚本正常运行

故障排除

  1. 证书更新失败

    • 检查域名解析是否正确

    • 确认80端口是否开放

    • 查看详细错误日志

  2. 权限问题

    • 确保脚本有读取证书文件的权限

    • 确保有写入下载目录的权限

  3. 服务无法启动

    • 检查服务文件路径是否正确

    • 确认Python路径是否正确

    • 查看系统日志获取详细错误信息

脚本下载:https://file.mancxi.cn/s/jRRiM

0
博主关闭了所有页面的评论