Let's Encrypt的泛域名证书

原先Let’s Encrypt只支持单域名证书,虽然可以多个域名共用一个证书,但如果子域名多并且分布于不同的服务器上,配置起来还是很麻烦的。还好从certbot 0.22开始(我现在用的是0.26.1,通过pip安装的版本通常会比apt之类装的版本更新一些),Let’s encrypt终于开始支持泛域名证书。这东西好是好,但是只能用DNS验证,如果域名注册商没有提供API,或者没有相应的插件,那么就无法自动renew了,每三个月需要自己手工更新一次,比较麻烦。

操作方法如下:

certbot certonly --manual --email <your_email> -d your_domain.com -d "*.your_domain.com" --preferred-challenges dns --agree-tos --server https://acme-v02.api.letsencrypt.org/directory --manual-public-ip-logging-ok

上面加了很多参数,免去了很多不必要的提示,但必要的提示操作还是必不可少的。

所以上面的命令运行之后会提示你,需要在_acme-challenge.your_domain.com这个子域名的txt记录里配置上一个特定的字符串,用于验证域名所有权。

配置好后按回车,验证通过之后会出来另外一个字符串,再次创建一个同名的txt记录填写这个新的串。

注意:要保持有两个同名的TXT记录记录这两个不同的验证字符串。

再次回车等待验证。

验证通过后即可获得证书,保存在:/etc/letsencrypt/live/your_domain.com/下面(实际上是几个Symbol link,连到archive下面)。

如果验证失败,可能是DNS更新没有那么快,可以在两次验证的回车之前先用nslookup检查一下是否生效,确定生效再回车。

nslookup
>set type=txt
>_acme-challenge.your_domain.com

注意,如果反复失败请检查错误信息,盲目重试会导致超过重试限制而无法注册。

另外,因为无法自动renew,必须每三个月重复以上步骤更新证书。

推送到[go4pro.org]