通过DNS验证自动申请nginx证书

验证的三种方式:

  1. 域名备案;这个不用说了吧,说多了也不好;
  2. 暂时将域名解析到境外服务器,获取到证书更新后再解析回来;
  3. 域名验证从http改成dns。

前两个办法比较简单,本文不再多说。这里说一下用dns方式验证域名的步骤。

dns验证有两个重要参数:

  • –preferred-challenges,验证方式,填写dns或dns-01;
  • –server, 验证服务器,填写https://acme-v02.api.letsencrypt.org/directory

还有一个--manual参数,但在“非交互式”环境下,必须同时指定--manual-auth-hook选项。什么是“非交互式”环境?renew就是非交互式环境,因为不需要外部输出和参与;而certonly(一般)是交互式的,因为执行过程中需要用户输入必要的信息。

本人没看auth-hook脚本的写法,所以用dns方式renew证书是不可行了。那就干脆重新再获取一次证书吧!输入命令:

certbot certonly -d 域名 --preferred-challenges dns --manual --server https://acme-v02.api.letsencrypt.org/directory

命令会询问是否同意记录当前机器的ip,必选“y”(选n会导致脚本退出)。接着命令会输出dns记录的验证信息,按照指定值在dns控制台加上 TXT 记录。dns记录添加完成后等半分钟左右让记录生效,然后按回车键,记录无误的话证书就生成了。

感谢伟大的防火墙和备案机制,又让我长见识了!

参考

  1. Invalid response use certbot in ubuntu
  2. Let’s Encrypt 免费通配符 SSL 证书申请教程
  3. https://zhuanlan.zhihu.com/p/80909555
  4. https://tlanyan.me/lets-encrypt-renew-error-challenge-failed-for-domain-xxxx/
posted @ 2020-05-26 16:15  jonnyan  阅读(1198)  评论(0编辑  收藏  举报