问题描述
使用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失败的几种方案,您可以根据具体情况选择适合您的方案进行尝试。如果问题仍然存在,请考虑咨询专业人士以获取更多帮助。