larryli.cn
使用 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 服务,只需要每个服务多建一个域名即可。