在 CentOS 上,你可以使用 Let’s Encrypt 提供的 Certbot 工具来申请和自动续约免费的 SSL 证书。
1. 安装 Certbot
CentOS 7+ 安装 EPEL 和 Certbot
yum install -y epel-release
yum install -y certbot python3-certbot-nginx
如果使用的是 Apache:
yum install -y certbot python3-certbot-apache
CentOS 8+ (使用 DNF)
dnf install -y epel-release
dnf install -y certbot python3-certbot-nginx
2. 申请 SSL 证书
根据你的 Web 服务器,运行以下命令:
Nginx
certbot --nginx -d yourdomain.com -d www.yourdomain.com
Apache
certbot --apache -d yourdomain.com -d www.yourdomain.com
首次运行时,它会:
- 验证域名所有权
- 自动配置 HTTPS 证书
- 证书默认有效期 90 天
PS:如果nginx不是默认的安装路径,可以手动指定并自行修改nginx的配置文件,参考Certbot实现SSL免费证书自动续签(CentOS 7版 + Docker部署的nginx) 中的方案2 webroot模式
3. 配置自动续约
Let’s Encrypt 证书 90 天后会过期,因此需要定期续约。
检查 Certbot 是否正常续约
certbot renew --dry-run
如果看到 “Congratulations, all renewals succeeded”,说明续约正常。
设置定时任务(自动续约)
编辑 crontab
:
crontab -e
添加以下行,每天凌晨 2 点自动检查并续约
Let’s Encrypt 续约后,需要重启 Web 服务器使证书生效。可以在 crontab
里加上:
Nginx
0 2 * * * certbot renew --quiet --deplpy-hook "systemctl reload nginx"
或者
0 2 * * * certbot renew --quiet --deplpy-hook "nginx -s reload"
Apache
0 2 * * * certbot renew --quiet --deploy-hook "systemctl reload httpd"
5. 验证证书是否生效
certbot certificates
或者
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com | openssl x509 -noout -dates
如果 Not After
日期更新,说明续约成功。✅
这样,你的 SSL 证书就会 自动续约,无需手动操作! 🚀