
去年有个数据:Let's Encrypt 的统计显示,相当一部分证书不是被主动吊销的,而是站长忘了续期,硬生生过期。Chrome 和 Firefox 对过期证书的态度是直接红色警告页,用户看到这个页面基本就走了,对流量和搜索排名都是实打实的伤害。
Let's Encrypt 证书免费但有效期只有 90 天,靠手动续肯定要出事。certbot 装好之后加一条自动任务,这事就一劳永逸了。
# 安装(以 CentOS/RHEL 系为例)
yum install -y certbot python3-certbot-nginx
# 首次签发证书,自动改 Nginx 配置
certbot --nginx -d example.com -d www.example.com
# 续期并静默重载
certbot renew --quiet
certbot 的续期机制设计得很聪明:renew 命令会检查所有证书的剩余有效期,离到期不足 30 天才会真正续。所以定时任务可以放心每天跑一次,未到期的证书直接跳过,不会碰 Let's Encrypt 的频率限制。
# crontab -e 每天凌晨 3 点尝试续期
0 3 * * * certbot renew --quiet --deploy-hook "nginx -s reload"
这里有个细节值得说:--deploy-hook 只在证书真的续期成功时触发,用来重载 Nginx 加载新证书。直接写 renew 后面跟 reload 的问题是,没续期也会白重载一次,虽然无害但不干净。
验证方式两条命令:
# 模拟续期流程,不动真证书
certbot renew --dry-run
# 看证书有效期
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates
dry-run 会走完整流程但用测试环境签发,能提前暴露 80 端口被占、DNS 解析错误这类续期失败的原因。我见过太多人配置一次就不管,等真要续的时候才发现防火墙把验证端口封了。建议每季度手动跑一次 dry-run,加到日历里,两分钟的事。
数据来源:Certbot官方文档
申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!
