假如用户使用Let's Encrypt自动续费步骤,因为这是最常见且免费的,而且自动续期工具也比较成熟。那么,我应该先想到Certbot这个工具。Certbot可以自动化申请和续期证书,用户可能需要安装并配置它。配置SSL证书的自动续期通常需要结合证书颁发机构(CA)的工具和系统的定时任务(如cron)。下面是基于 Let's Encrypt(最常用的免费证书)的通用步骤,其他商业证书也可能需要类似工具(如 acme.sh)。
步骤 1:安装 Certbot(Let's Encrypt 官方工具)
bash
复制
Ubuntu/Debian
sudo apt update
sudo apt install certbot
CentOS/RHEL
sudo yum install epel-release
sudo yum install certbot
步骤 2:初次获取证书(若未申请过证书)
假设使用 Webroot 验证(需确保域名已指向服务器):
bash
复制
sudo certbot certonly --webroot -w /var/www/html -d example.com --email your@email.com --agree-tos
w: Web 根目录(需匹配网站配置的根目录)。
d: 域名(可多个,如 -d example.com -d www.example.com)。
email: 接收续期通知的邮箱。
步骤 3:配置自动续期
Certbot 默认会创建自动续期的定时任务,但需确认:
1.检查定时任务:
bash
复制
sudo systemctl list-timers | grep certbot
或查看 cron 任务:
bash
复制
sudo cat /etc/cron.d/certbot
2. 手动测试续期命令:
bash
复制
sudo certbot renew --dry-run
成功输出 The dry run was successful 表示配置正确。
步骤 4:续期后自动重启服务(可选)
证书续期后,需重启 Web 服务器加载新证书。通过 --post-hook 或 --deploy-hook 实现:
bash
复制
编辑 Certbot 的续期配置文件
sudo vim /etc/letsencrypt/cli.ini
添加以下内容(以 Nginx 为例):
ini
复制
deploy-hook = systemctl reload nginx
或直接在续期命令中添加:
bash
复制
sudo certbot renew --post-hook "systemctl reload nginx"
步骤 5:其他验证方式(如 DNS 验证)
若使用 DNS 验证(适用于无法开放 80/443 端口的场景),推荐使用 acme.sh:
bash
复制
安装 acme.sh
curl https://get.acme.sh | sh
source ~/.bashrc
配置 DNS API 密钥(以 Cloudflare 为例)
export CF_Key="your_cloudflare_api_key"
export CF_Email="your@email.com"
申请证书
acme.sh
issue --dns dns_cf -d example.com -d *.example.com
安装证书到指定目录
acme.sh --install-cert
d example.com \
key-file /etc/nginx/ssl/example.com.key
fullchain-file /etc/nginx/ssl/example.com.crt
reloadcmd "systemctl reload nginx"
自动续期已内置,无需额外配置
关键注意事项
1. 日志与调试:
Let's Encrypt 日志路径:/var/log/letsencrypt/letsencrypt.log。
使用 certbot renew --force-renewal 强制手动续期。
2. 证书路径:
Let's Encrypt 证书默认存储在 /etc/letsencrypt/live/域名/。
3. 安全性:
保护私钥文件(如 .key)的权限为 600。
若使用 DNS 验证,确保 API 密钥安全存储。
上面就是Let`s Encrypt自动续费步骤,Let's Encrypt + Certbot:适合大多数 Web 服务器,自动化程度高。
acme.sh:灵活支持多 CA 和 DNS 验证,适合复杂场景。
定时任务 + 续期后钩子:确保服务无缝加载新SSL证书。