如何解决Linux服务器上Let's Encrypt SSL续订错误?
Certbot 续订错误、域验证问题和过期 SSL 证书指南。
当网站的 SSL 证书过期时,访问者将在浏览器中看到不安全警告。这不仅降低了用户的信任度; WHMCS 还给支付系统、API 连接、游戏面板和客户登录带来严重问题。
Let's Encrypt 证书是免费的,但必须定期更新。如果 Certbot 配置不正确,续订将失败并且 SSL 可能会过期。
1. 检查可用证书
首先检查服务器上有哪些证书:
certbot certificates
此命令显示证书名称、域、文件路径和到期日期。
如果没有 certbot 命令,则可能无法安装:
certbot --version
2. 执行刷新测试
要在实际续订之前测试证书:
certbot renew --dry-run
此命令测试刷新过程。如果出现错误,您可以在实际续订日之前看到问题。
3. 最常见的 Certbot 错误
大多数 Let's Encrypt 续订错误与域验证和 Web 服务器访问有关。
- 无效响应: Let's Encrypt 无法访问验证文件。
- 连接被拒绝: 端口 80 或 443 可能已关闭。
- 连接超时: 该域可能未定向到服务器,或者防火墙可能阻止它。
- 未经授权: 域验证文件可能返回不正确的内容。
- 证书过多: 证书尝试可能过于频繁。
4. 检查域IP路由
为了使证书续订生效,必须将域定向到正确的服务器 IP 地址。
dig domainadi.com +short
如果没有安装 dig:
apt install dnsutils -y
在基于 CentOS 的系统上:
yum install bind-utils -y
域返回的 IP 必须与将安装 SSL 的服务器的 IP 地址相同。
5.检查80和443端口
Let's Encrypt 经常需要访问 80 端口进行 HTTP 身份验证。如果80端口被关闭,认证可能会失败。
ss -tulpn | grep -E ':80|:443'
如果您使用防火墙,请确保端口 80 和 443 已打开。
对于 UFW:
ufw allow 80/tcp ufw allow 443/tcp ufw reload
对于防火墙:
firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload
6. Nginx 或 Apache 配置测试
如果 Web 服务器配置文件中存在错误,则 certbot 刷新后可能无法重新加载 Web 服务。
对于 Nginx:
nginx -t
对于阿帕奇:
apachectl configtest
如果没有错误,您可以重新安装服务:
systemctl reload nginx
或:
systemctl reload apache2
7. SSL证书手动续订
如果所有检查均正确,您可以手动运行刷新:
certbot renew
如果您只需要重新认证特定域,则 Nginx 示例:
certbot --nginx -d domainadi.com -d www.domainadi.com
阿帕奇示例:
certbot --apache -d domainadi.com -d www.domainadi.com
8. 检查自动刷新计划程序
Certbot 通常使用 systemd 计时器或 cron 自动刷新。
systemctl list-timers | grep certbot
检查定时器状态:
systemctl status certbot.timer
如果定时器关闭:
systemctl enable certbot.timer systemctl start certbot.timer
常见错误
- 域IP地址错误时尝试获取SSL
- 关闭80端口,等待HTTP认证生效
- Cloudflare 代理开启时不检查身份验证结构
- 将 Nginx/Apache 配置错误误认为 certbot 错误
- 在 SSL 过期之前不测试自动续订
常见问题解答
如果 SSL 过期,网站会完全关闭吗?
该网站在技术上可能可以正常工作,但浏览器会显示安全警告。这严重降低了客户的信任度。
为什么 Certbot 续订失败?
通常是将域名定向到错误的 IP、80/443 端口关闭、Web 服务器配置不正确或验证文件无法访问。
使用 Cloudflare 时 SSL 续订是否会出现问题?
不正确的 SSL 模式或代理配置可能会影响验证过程。应相应选择域验证方法。
安全和操作建议
- 定期检查 SSL 过期日期。
- 定期运行 certbot renew --dry-run 测试。
- 不必要时请勿关闭端口 80 和 443。
- Web 服务器配置更改后,运行 nginx -t 或 apachectl configtest。
- 不要忽视对使用支付和客户面板的域的 SSL 监控。
本文是专门为PvPServer准备的。