一、写本外壳背景
-
acme.sh 使用 DNS alias mode 功能 申请 Let's Encrypt 证书,如果申请DNS域大约超过8个以上就会遇到
Incorrect TXT record
错误。本人大致看了acme.sh
脚本alias mode
功能暂时没有发现脚本中间有bug,后本人没有办法就在acme.sh
脚本外面套一层外壳,具体使用方法见下面内容。
二、使用本外壳前准备环境
- acme.sh 脚本安装
- 设置DNS CNAME 记录
- 安装
Python3
环境 - 下载 letsencrypt-dns-alias.py
三、本外壳使用注意
- 只支持
DNS alias mode 功能
。 - 只支持
--challenge-alias
参数,不支持--domain-alias
参数。 - 不能往外壳传入
--domain -d --domain-alias --challenge-alias --dns --log-level --log
参数。 - 每次向
Let's Encrypt
申请5个域名,依次累加,申请通过的域名在一断时间内不需要再次验证。 - 开启记录日志模式,日志级别为
2
。 - 申请证书失败时,支持重试2次,每次等待20秒。
-
acme.sh
脚本一定要安装在/root/.acme.sh
目录下
四、使用方法
- 第一次使用下面命令
$ letsencrypt-dns-alias.py --command="--issue" --challenge-alias="alias domain" --dns="dns_ali" --key-name="Ali_Key" --secret-name="Ali_Secret" --key="***" --secret="***" --domain="*.a.com,*.b.com"
- 如果
acme.sh
脚本已记录DNS厂商AK值,可以使用下面命令。
$ letsencrypt-dns-alias.py --command="--issue" --challenge-alias="alias domain" --dns="dns_ali" --domain="*.a.com,*.b.com"
- 上面命令中
--key-name="Ali_Key" --secret-name="Ali_Secret"
是DNS厂商api名称,具体api支持见How to use DNS API。
关注我
欢迎大家关注交流,定期分享自动化运维、DevOps、Kubernetes、Service Mesh和Cloud Native