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
转载请注明:转载自 易科博客 ,谢谢!