使用 Caddy 和 Dnspod 自动申请 Let’s Encrypt 证书

Let’s Encrypt 申请证书的 ACME 协议支持三种认证,分别是:

  1. 基于 80 端口的 http-01
  2. 基于 443 端口的 tls-sni-02
  3. 无需端口的 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/caddyexport 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 服务,只需要每个服务多建一个域名即可。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据