acme-dns 安装及使用
acme-dns 是一个轻量级的用于 acme 证书申请认证的 DNS服务器。
acme-dns 提供了专门用于TXT记录更新的简单API,应与“ _acme-challenge”(子域CNAME记录)一起使用。 这样,在不幸暴露API密钥的情况下,影响仅限于所讨论的子域TXT记录,因而相对来说比较安全。
前提条件
将需要作为认证的域名(如 “acmedns.exsvc.cn”)在 DNS 解析中添加 NS 记录指向需要搭建的服务器公网IP。
通过Docker安装
# 获取镜像 docker pull joohoi/acme-dns # 创建用于保存配置和数据的文件夹 mkdir -p /data/docker/acme-dns/{config,data} # 下载配置文件示例并根据需要修改 wget https://raw.githubusercontent.com/joohoi/acme-dns/master/config.cfg -O /data/docker/acme-dns/config/config.cfg sed -i 's|"auth.example.org. NS auth.example.org."|"*.auth.example.org. NS auth.example.org."|g' /data/docker/acme-dns/config/config.cfg # 将配置文件中的 auth.example.org 替换为 acmedns.exsvc.cn # tls 设置项用于API调用时是使用 http 还是 https # listen 监听的IP和端口,可以设置为 0.0.0.0:53 # 如果使用cdn等访问,将use_header设置为true # 将 198.51.100.1 替换为你服务器的真实IP # 创建并运行容器 docker run --name acmedns \ -p 53:53 \ -p 53:53/udp \ -p 443:443 \ -v /data/docker/acme-dns/config:/etc/acme-dns:ro \ -v /data/docker/acme-dns/data:/var/lib/acme-dns \ --restart=always \ -d joohoi/acme-dns # 确认服务API可以,返回200状态码 curl -v https://127.0.0.1/health
使用
注册用户
curl -s -X POST https://127.0.0.1/register | python -m json.tool # 返回结果如下: { "allowfrom": [], "fulldomain": "943938bc-f664-426f-ae30-73045e9b8c84.acmedns.exsvc.cn", "password": "49GId8eeDmSzo_O--Xw4o14vpZmgsrNYW-6s0pI5", "subdomain": "943938bc-f664-426f-ae30-73045e9b8c84", "username": "30837203-ab01-4433-ae42-312e2d41e648" } # 测试DNS更新 curl -X POST \ -H "X-Api-User: 30837203-ab01-4433-ae42-312e2d41e648" \ -H "X-Api-Key: 49GId8eeDmSzo_O--Xw4o14vpZmgsrNYW-6s0pI5" \ -d '{"subdomain": "943938bc-f664-426f-ae30-73045e9b8c84", "txt": "___validation_token_received_from_the_ca___"}' \ https://127.0.0.1/update #查询txt记录是否已更新(返回:___validation_token_received_from_the_ca___) dig -t txt @acmedns.exsvc.cn 943938bc-f664-426f-ae30-73045e9b8c84.acmedns.exsvc.cn
DNS设置
将需要申请的域名证书的域名的 _acme-challenge 记录 cname 指向上例的 943938bc-f664-426f-ae30-73045e9b8c84.acmedns.exsvc.cn
通过acme.sh申请证书
export ACMEDNS_UPDATE_URL="https://acmedns.exsvc.cn/update" export ACMEDNS_USERNAME="<username>" export ACMEDNS_PASSWORD="<password>" export ACMEDNS_SUBDOMAIN="<subdomain>" acme.sh --issue --dns dns_acmedns -d example.com -d www.example.com
原文链接地址:https://blog.exsvc.cn/article/acme-dns.html
转载请注明:转载自 易科博客 ,谢谢!