Certbot续订失败的IPv6问题

79次阅读
没有评论

问题描述

使用LetsEncrypt CA为SSL证书,并使用cron job定期续订证书。最近将其中一个域名迁移到了双栈IPv4/IPv6环境,现在该域名的证书续订失败了。
错误信息如下:

Attempting to renew cert (nodrama.io) from /etc/letsencrypt/renewal/nodrama.io.conf produced an unexpected error: Failed authorization procedure.www.nodrama.io (tls-sni-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization ::Incorrect validation certificate for tls-sni-01 challenge.Requested 1d2e60bbb911a0fa373af1c71068a98f.df68ccc953b03b03cbca639fa7b20469.acme.invalid from [2600:1f16:14a:7b00:e9ba:752c:feb8:49d5]:443.Received 1 certificate(s), first certificate had names "5de1f81c71783962782726ac76156d00.51706d503a8be636f033680ff5a1664e.acme.invalid, dummy". Skipping.

如果从nginx服务器配置中移除IPv6上的443端口,则验证通过,证书续订成功。重新添加后,IPv6上的内容可以通过https访问。

Connected to nodrama.io (2600:1f16:14a:7b00:e9ba:752c:feb8:49d5) port 443 (#0)* found 592 certificates in /etc/ssl/certs* ALPN, offering http/1.1* SSL connection using TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256* server certificate verification OK

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

将验证方式从tls-sni更改为http,即使用--preferred-challenges http参数。
以下是具体步骤:
1. 打开终端或命令行界面。
2. 运行以下命令来续订证书,并将验证方式更改为http:

certbot renew --preferred-challenges http

这将使用http方式进行验证,并尝试续订证书。

方案2

如果方案1无效,请确保您的服务器配置正确,并确保IPv6上的443端口可用。
如果方案1无效,您可以尝试检查服务器配置是否正确,并确保IPv6上的443端口可用。您可以按照以下步骤进行操作:
1. 打开nginx服务器配置文件。
2. 确保配置文件中有以下内容:

listen [::]:443 ssl;

这将确保IPv6上的443端口可用。
3. 保存并关闭配置文件。
4. 重新加载nginx配置:

sudo service nginx reload

这将重新加载nginx配置并使更改生效。
请注意,如果您对服务器配置不熟悉,建议在进行任何更改之前备份配置文件,并在更改之前咨询专业人士。

方案3

如果以上方案都无效,请尝试更新Certbot版本。
如果以上两种方案都无效,您可以尝试更新Certbot版本。较新的版本可能会修复一些已知的问题。您可以按照以下步骤进行操作:
1. 打开终端或命令行界面。
2. 运行以下命令来更新Certbot:

sudo apt-get update
sudo apt-get upgrade certbot

这将更新Certbot到最新版本。
请注意,更新Certbot可能会导致其他依赖项的更新或更改,因此请在更新之前备份重要数据,并在更新之前咨询专业人士。
以上是解决Certbot续订IPv6失败的几种方案,您可以根据具体情况选择适合您的方案进行尝试。如果问题仍然存在,请考虑咨询专业人士以获取更多帮助。

正文完