如何配置无ACME、严格SNI的Caddy反向代理(证书存于Vault)
Caddy反向代理配置方案(满足Vault证书懒加载与严格SNI需求)
核心配置(Caddyfile)
{ storage vault { address "http://your-vault-address:8200" token "your-vault-token" path "secret/caddy/certificates" # 替换为Vault中实际的证书存储路径 prefix "" # 无路径前缀则留空,按需调整 } auto_https off tls { on_demand # 启用证书懒加载,仅在有请求时从Vault加载对应证书 strict_sni # 严格SNI匹配,无对应证书时直接断开TLS连接 } } :80 { reverse_proxy localhost:8080 } :443 { tls reverse_proxy localhost:8080 }
配置关键点说明
- Vault存储对接:通过
storage vault块配置Vault的连接参数,确保Caddy能访问到外部维护的证书。需替换为你的Vault实际地址、访问令牌和证书存储路径。 - 禁用自动HTTPS:
auto_https off彻底关闭Caddy自带的ACME证书管理,完全依赖外部流程维护证书。 - TLS规则配置:
on_demand避免预加载大量证书,降低启动耗时;strict_sni确保无匹配SNI的请求直接断开TLS连接,不返回默认证书或错误页面。 - 流量转发:80端口的HTTP请求、443端口的HTTPS请求统一转发至
localhost:8080后端服务。
问题排查方向
若仍出现"无法找到对应证书"的错误,可从以下几点验证:
- 确认Vault中证书的存储结构与Caddy配置的
path完全匹配,证书需以对应域名作为标识存储(Caddy默认按域名组织证书目录)。 - 检查Vault令牌权限,确保Caddy拥有该路径下证书的读取权限。
- 启动Caddy时添加
--log-level debug参数,查看证书加载的具体错误日志,定位路径或权限问题。
是否需要更换代理?
不需要更换代理。Caddy的Vault存储集成、on_demand懒加载、strict_sni特性完全覆盖你的需求:跨实例共享证书(依赖Vault分布式存储)、支持大量证书(懒加载避免预加载)、SNI匹配证书、严格SNI校验。配置正确即可实现预期效果。
内容的提问来源于stack exchange,提问作者Xobtah
相关产品推荐
相关产品推荐

