Caddy + Let's Encrypt 多节点证书管理
CaddyACMELet's Encrypt
在多个边缘节点上管理 TLS 证书自动化续签时,需要避免 ACME 请求速率限制和单点故障。
架构
每个节点运行独立的 Caddy 实例,各自通过 HTTP-01 challenge 完成证书签发和续签。Caddy 内置 ACME 客户端,默认在证书到期前 30 天自动续签。
关键配置
确保 80 端口对外可达(ACME HTTP-01 验证需要),并且 DNS A 记录正确指向当前节点:
# Caddyfile 示例
http://edge.example.com {
redir https://{host}{uri} 308
}
https://edge.example.com:8443 {
bind 127.0.0.1
root * /var/www/cover
file_server
}
证书同步
如果多个服务(如 Hysteria2)需要使用同一张证书,可以设置定时同步任务:
# /usr/local/sbin/sync-cert
src=/var/lib/caddy/.local/share/caddy/certificates/
acme-v02.api.letsencrypt.org-directory/edge.example.com/
dst=/etc/hysteria/certs/
install -m 644 $src/edge.example.com.crt $dst/fullchain.crt
install -m 600 $src/edge.example.com.key $dst/private.key
systemctl try-restart hysteria-server