通配符域名不同于一般的单域名证书. 为了解决之前一篇短文中通配域名通过DNS方式验证的证书自动更新问题. 需要使用到第三方域名提供商的API, 用于自动添加域名的TXT记录, 实现自动验证并完成证书更新过程.
要求和适应性
- 要求了解 Let's encrypt 通配域名(二级, 三级)
- 使用 Cloudflare 的DNS解析服务
- 阿里云的插件在这里
安装插件
pip install certbot-dns-cloudflare
创建存储API调用凭证的目录
mkdir -p ~/.secrets/certbot
chmod 0700 ~/.secrets
# Cloudflare API 秘钥
cat > ~/.secrets/certbot/cloudflare.ini <<END
dns_cloudflare_email = admin@example.com
dns_cloudflare_api_key = 1c6287abdc254293f3b4837ad871937ajfb81
END
# 修改文件权限
chmod 0400 ~/.secrets/certbot/cloudflare.ini
执行更新
certbot certonly -d '*.example.com' \
--agree-tos \
--email admin@example.com \
--server https://acme-v02.api.letsencrypt.org/directory \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
--dns-cloudflare-propagation-seconds 30
--dns-cloudflare-propagation-seconds 30
表示等待30秒, 让DNS完成传播再发起验证过程.
概要
通过提供 Cloudflare 的API秘钥, certbot-dns-cloudflare 插件可以调用 Cloudflare 的 DNS 接口自动添加DNS验证所需要的TXT记录
自动化
为了自动化该过程, 需要编写一个脚本放到Cron中定时执行.
Godaddy
- 系统: Ubuntu 20.04
# 安装插件
pip install certbot-dns-godaddy
选项 | 说明 |
---|---|
--authenticator dns-godaddy | 选择认证插件(必须) |
--dns-godaddy-credentials FILE | godaddy 凭证文件. (必须) |
--dns-godaddy-propagation-seconds NUM | 在请求ACME服务器之前等待 DNS 更新传播的时间(默认:30s, 推荐>=600 |
手工更新证书时间不宜设置太长, 免得等. 自动化脚本不存在这个问题, 一般设置推荐的 600 秒即可.创建和管理Godaddy 的 API Key的连接: https://developer.godaddy.com...
创建的时候有 OTE 和 Production 两种环境可选, OTE 环境是为测试环境准备的, 这里选择 Production 环境即可, 如有需要利用 Godaddy API 开发域名管理应用, 可以选择 OTE 环境.
# ~/.secrets/certbot/credentials.ini
dns_godaddy_secret = 0123456789abcdef0123456789abcdef01234567
dns_godaddy_key = abcdef0123456789abcdef01234567abcdef0123
# 获取证书
certbot certonly \\
--authenticator dns-godaddy \\
--dns-godaddy-credentials ~/.secrets/certbot/credentials.ini \\
--dns-godaddy-propagation-seconds 600 \\
--keep-until-expiring --non-interactive --expand \
--server https://acme-v02.api.letsencrypt.org/directory \
-d 'example.com' \\
-d '*.example.com'
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。