0x1 理论基础
- 以DNS的方式向Let's Encrypt申请校验码;
- 在域名解析中增加TXT记录,用于校验;
- 校验通过后生成证书;
- 自动renew问题的应对方法;
0x2 详细操作 (如果嫌麻烦请看0x3)
1. 申请校验码
certbot certonly -d *.domain.net --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory\n
这个过程第一步会询问你是否同意记录你的IP
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.\n\nAre you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o:
Y, 进入下一步, 出现认证的校验码
Please deploy a DNS TXT record under the name
_acme-challenge.domain.net with the following value:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Before continuing, verify the record is deployed.
在这里需要等待,不要按下回车键,复制那一长串校验码,进入到你域名解析的页面
2. 添加解析记录
添加记录
主机记录为_acme-challenge
记录类型为TXT
记录值为xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
如图
// .jpg fly.
保存之后要先通过测试,看DNS的解析是否已经生效
3. 查看解析记录是否生效
Linux中可用
watch -d -n 2 dig -t txt _acme-challenge.domain.net @223.5.5.5
macOS好像没有watch
, 手动隔几秒执行一下好了。腾讯云的一般1分钟内就会解析生效;
dig -t txt _acme-challenge.domain.net @223.5.5.5
出现如下结果
Every 2.0s: dig -t txt _acme-challenge.domain.net @223.5.5.5 htpc: Thu Oct 10 22:06:46 2019
; <<>> DiG 9.11.3-1ubuntu1.9-Ubuntu <<>> -t txt _acme-challenge.domain.net @223.5.5.5
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58041
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1452
;; QUESTION SECTION:
;_acme-challenge.domain.net. IN TXT
# 重点在这里,出现answer section显示刚刚添加的记录值就是已经正常了。
;; ANSWER SECTION:
_acme-challenge.domain.net. 564 IN TXT "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
;; Query time: 287 msec
;; SERVER: 223.5.5.5#53(223.5.5.5)
;; WHEN: Thu Oct 10 22:06:46 CST 2019
;; MSG SIZE rcvd: 108
4. 继续执行申请证书
回到第一步中等待的终端,按下回车后,等待校验通过就会生成证书;如果出错可能是解析没成功就按了回车。
0x3 使用脚本申请证书和自动renew
我是通过申请证书之后发现renew并不正常,找解决方法的时候才发现这个脚本。
脚本地址:https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au
这个脚本的说明已经很详细了,我就不复制过来了;
如果你打算使用这个脚本做renew,而对
Are you OK with your IP being logged?
这个询问有疑问,其实这个询问只会在申请证书的时候才会有,renew的时候是不会出现的。
所以这个脚本在自动renew的时候不会因为这个问题而卡住。