ACME:通过DNS方式添加证书

在通常情况下,用DNS API方式自动注册证书是最好的方式,但是如果域名服务商不支持API方式,然后又想注册泛域名的话,就只能通过DNS手动方式来操作。

首先第一步,调用 issue 参数来生成txt值

(在做这一步前,请先确认在~/.acme.sh/<domain>目录中,是否存在过期的key文件,如果有,需要先删除整个domain目录,否则key文件不会被更新)

sudo ~/.acme.sh/acme.sh --issue --force -d *.domain.com --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

该命令会生成类似

[Wed Dec 21 03:32:02 UTC 2022] Domain: '_acme-challenge.domain.com'
[Wed Dec 21 03:32:02 UTC 2022] TXT value: 'xxxxxx'

这样的结果。

第二步,在域名管理里面,添加txt记录,key是 _acme-challenge,值就是 TXT value。

稍等片刻,然后用命令验证该txt值是否生效。

nslookup -type=txt _acme-challenge.domain.com

如果看到的 text 是之前填入的 TXT value,就说明设置生效。

第三步,生成证书。sudo ~/.acme.sh/acme.sh --renew -d *.domain.com --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

正常情况下,结果中就会显示证书的生成位置,然后执行证书安装命令就可,可以参照官方文档。

https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E

ex:

acme.sh --install-cert -d *.domain.com \
--key-file /etc/nginx/cert/keyfile/in/nginx/xxx-key.pem \
--fullchain-file /etc/nginx/cert/fullchain/nginx/xxx-cert.pem \
--reloadcmd "service nginx force-reload"

posted @ 2022-12-21 11:57  GreatK  阅读(1173)  评论(0编辑  收藏  举报