问题及诉求
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)
转载请注明: 转载自elkPi.com
本文链接地址: 解决certbot通配符及基础域名共用一个证书some challenges have failed问题