使用 Caddy 和 Dnspod 自动申请 Let’s Encrypt 证书
Let’s Encrypt 申请证书的 ACME 协议支持三种认证,分别是:
- 基于 80 端口的 http-01
- 基于 443 端口的 tls-sni-02
- 无需端口的 dns-01
dns-01
需要在 DNS 服务器增加对应的 TXT 记录来完成验证。
Caddy 现在有官方的 tls.dns.dnspod 插件支持托管在 Dnspod 的域名使用 dns-01
来申请 Let’s Encrypt 证书。
首先,需要在 Dnspod 用户中心的安全设置中申请 API Token,复制其 ID 和 TOKEN。
然后,修改 Caddy 服务配置脚本,比如 sysvinit 系统的 /etc/init.d/caddy
在 export CADDYPATH=/etc/ssl/caddy
后面增加一行:
export DNSPOD_API_KEY="$ID,$TOKEN"
就是用 ID 和 TOKEN 以英文逗号分割的字符串。
最后,就是在对应的 Caddyfile 文件配置中启用:
tls {
dns dnspod
}
如果有配置多个域名,第一次启动会比较缓慢。因为需要每个域名依次申请证书。
题外话:
- 树莓派 1 代在下载 Caddy 时需要在 PLATFORM 选择 Linux ARMv6,然后在 PLUGINS 中选择 tls.dns.dnspod 即可。
- 如果 Dnspod 自己支持 DDNS 接口,不过一般路由器比如 TP-LINK 系都会支持花生壳 DDNS,自动在路由连接时登记,比定时脚本要靠谱很多。自己的域名只需要在 Dnspod 中 CNAME 到花生壳的免费域名。
- 一般情况,运营商不会开放 80 端口,但 443 端口是开放的。只需要在路由器将 443 端口转发给内网设备。
- Caddy 可以作为前端反向代理系统的其他的 http 服务,只需要每个服务多建一个域名即可。
发表评论