1、准备任意一台可以访问公网的Linux机器;
2、下载acme工具
curl https://get.acme.sh | sh
完成后再本地 root 下生成默认目录 /root/.acme.sh
3、cd到默认目录后,认证本地账户信息
./acme.sh --register-account -m my@example.com
4、指定使用证书颁发机构CA - ZeroSSL
./acme.sh --set-default-ca --server zerossl
5、使用DNS校验解析TXT记录方式认证(公网域名)
./acme.sh --issue --dns -d "osstest.moontest.com" -d "*.osstest.moontest.com" --yes-I-know-dns-manual-mode-enough-go-ahead-please
生成新的TXT记录后,由网络负责dns同事添加域名及对应的txt记录,比如:
Domain: '_acme-challenge.osstest.moontest.com'
TXT value: 'MtkuQjl91ySIkRp-SqOIbjiO315DPBRuNOnO1GfLf_M'
Domain: '_acme-challenge.osstest.moontest.com'
TXT value: '64eDU8LY7dyv0TaPrSjyv-VaMxc4ipMhp2hd_hKD8dA'
添加完成后,通过本机验证txt记录是否已经生效:
dig -t txt _acme-challenge.osstest.moontest.com
确认已经生效后,可通过命令进行域名证书的签发;
./acme.sh --renew --dns -d "osstest.moontest.com" -d "*.osstest.moontest.com" --yes-I-know-dns-manual-mode-enough-go-ahead-please
等待acme官网认证并签发,成功后打印 success 即可;
注意:生成crt证书文件应该为 /root/.acme.sh/osstest-internal.moontest.com/fullchain.cer 以及key文件 /root/.acme.sh/osstest-internal.moontest.com/osstest-internal.moontest.com.key
6、使用DNS校验解析TXT记录方式认证(内网域名)
首先需要将内网域名dns解析更改为公网地址,其次按上述操作5 执行TXT记录生成并签发,最终生成证书文件依旧按 fullchain.cer 及 osstest-internal.moontest.com.key 明确最终文件。
7、更正域名文件名
crt文件 /root/.acme.sh/osstest-internal.moontest.com/fullchain.cer 更正为 _.osstest-internal.moontest.com.crt
/root/.acme.sh/osstest.moontest.com/fullchain.cer 更正为 _.osstest.moontest.com.crt
key文件 /root/.acme.sh/osstest-internal.moontest.com/osstest-internal.moontest.com.key
/root/.acme.sh/osstest.moontest.com/osstest.moontest.com.key
8、保存域名证书到本地;
9、将证书转存至指定对象存储caddy目录下,并通过openssl指令校验证书dns与有效期;
(已外网域名证书为例)openssl x509 -in _.osstest.moontest.com.crt -noout -text
对应有效期——( 2022-06-14 — 2022-09-12 )
对应DNS域名认证为 根域名以及其*.泛域名
10、重启caddy服务即可在线生效其证书有效期。