HTTPS证书总是过期怎么办?自动续签的各种方案对比

王尘宇 问题解答 7

一个老问题但每天都有人踩坑。SSL证书过期导致网站打不开,用户看到的是「您的连接不是私密连接」,不管内容多好,第一印象已经毁了。

为什么证书会过期

Lets Encrypt的免费证书有效期只有90天。很多人第一次配好以后就忘了,三个月后网站突然挂了才想起来。手动续签不是不行,但人总会忘。

方案一:Certbot自动续签(最常用)

安装certbot以后,它会自动添加一个cron任务或systemd timer,每天检查两次证书状态,到期前30天自动续签。如果你用的是Nginx或Apache,certbot会自动重载配置。

安装命令:apt install certbot python3-certbot-nginx,然后certbot --nginx -d yourdomain.com。装完以后可以用certbot renew --dry-run测试一下。

注意:证书所在的目录权限要正确。遇到过续签失败的情况,排查下来是/home目录权限改成了700导致certbot读不到验证文件。

方案二:宝塔面板的自动续签

如果你用宝塔面板,SSL页面有个「自动续签」的开关,打开就行。宝塔会在证书到期前自动续签并部署。但有个坑:如果你的站点用了CDN,续签时的域名验证可能会失败,因为Let'''s Encrypt的验证请求被CDN拦截了。解决办法是续签前临时暂停CDN,或者改用DNS验证方式。

方案三:acme.sh(最灵活)

acme.sh是纯shell实现的ACME客户端,比certbot轻量,而且支持更多DNS服务商的API自动验证。如果你有几十个域名需要管理,acme.sh的批量操作更好用。

安装:curl https://get.acme.sh | sh。支持阿里云、Cloudflare、腾讯云等几十个DNS服务商的API,一条命令搞定泛域名证书。

方案四:Caddy自动HTTPS

如果你还没选Web服务器,Caddy是一个自带自动HTTPS的选项。配置Caddyfile写上域名,Caddy会自动申请和续签证书,完全不需要任何手动操作。缺点是需要换掉现有的Nginx或Apache。

最终建议

已经用Nginx或Apache的,装certbot并确认cron任务在跑。用宝塔的,打开自动续签开关。域名多的,上acme.sh。别等到用户投诉「网站打不开」才想起来证书过期了——那时候已经丢了很多流量。

标签: SSL证书 https Let's Encrypt 网站安全 问题解答

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~