解决certbot通配符及基础域名共用一个证书some challenges have failed问题

问题及诉求

certbot可以支持通配符,但是必须使用dns验证的方式,使用阿里云的dns sdk可以实现hook修改_acme-challenge TXT记录,但是如果将通配符与基础域名共用证书,也就是参数为 -d “*.example.com” -d example.com的这种形式,验证TXT都是使用的_acme-challenge.example.com 这个域名,这时候要求需要输入2次TXT的修改。因此如果你在对应DNS解析只配置单个的_acme-challenge.example.com那么则会出现Some challenges have failed验证失败的问题。

解决办法

解决办法其实也很简单,TXT在DNS解析的时候,是支持多个的,因此对于参数是2个的情况,则添加2条_acme-challenge.example.com的记录,并且使用阿里云提供的dns修改分别修改对应的TXT记录(不能每次都只修改同一条),这样在验证的TXT记录的时候,获取到的条目与-d的条目一致,就可以正常生效。

另外需要注意的,由于国内使用阿里云DNS或其他的一些DNS域名解析,会有生效问题,因此可以在hook里面等待个60秒或者更长的时间,保证到时候可以正常验证。

参考资料

User Guide — Certbot 1.32.0 documentation (eff-certbot.readthedocs.io)

Wildcard + basedomain fails because of double hook · Issue #7592 · certbot/certbot (github.com)

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Scroll to top