ACME 证书、HTTPS、Caddy的讲解
编辑
2025-06-09
建站教程
00

目录

ACME 证书申请方式
HTTP-01 挑战
DNS-01 挑战
Caddy 一般证书申请配置
基础自动证书配置
指定邮箱配置
使用DNS-01挑战
自定义CA配置
Caddy 按需证书申请配置
基础按需配置
带域名白名单的按需配置
JSON 配置格式的按需证书
重要注意事项
按需证书的安全考虑
推荐配置

ACME 证书申请方式

HTTP-01 挑战

  • 原理:CA向域名的 /.well-known/acme-challenge/ 路径发送HTTP请求验证域名控制权
  • 优点:配置简单,无需DNS API
  • 缺点:需要80端口可访问,不支持通配符证书
  • 适用场景:单域名或多个具体域名的证书申请

DNS-01 挑战

  • 原理:在域名的DNS记录中添加TXT记录来验证域名控制权
  • 优点:支持通配符证书,无需开放80端口,可在内网使用
  • 缺点:需要DNS提供商API支持,配置相对复杂
  • 适用场景:通配符证书、内网服务、防火墙限制环境

Caddy 一般证书申请配置

基础自动证书配置

caddyfile
展开代码
example.com { respond "Hello World" }
  • Caddy 默认自动为站点申请Let's Encrypt证书
  • 使用HTTP-01挑战方式
  • 自动续期

指定邮箱配置

caddyfile
展开代码
{ email your-email@example.com } example.com { respond "Hello World" }

使用DNS-01挑战

DNS-01挑战才支持通配符。

caddyfile
展开代码
{ acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN} } *.example.com { respond "Hello World" }

自定义CA配置

自定义 ACME CA:强制 Caddy 使用 Let's Encrypt 的测试环境签发证书(仅用于开发/测试)。测试环境的证书是无效的(浏览器不信任),但不会触发生产环境的速率限制,适合调试。

caddyfile
展开代码
{ acme_ca https://acme-staging-v02.api.letsencrypt.org/directory } example.com { respond "Hello World" }

Caddy 按需证书申请配置

基础按需配置

caddyfile
展开代码
{ on_demand_tls { ask http://localhost:8080/check-domain } } :443 { tls { on_demand } respond "Hello {host}" }

带域名白名单的按需配置

caddyfile
展开代码
{ on_demand_tls { ask http://localhost:8080/check-domain interval 2m burst 5 } } :443 { tls { on_demand } @allowed host example.com subdomain.example.com handle @allowed { respond "Allowed domain: {host}" } handle { respond "Domain not allowed" 403 } }

JSON 配置格式的按需证书

json
展开代码
{ "apps": { "http": { "servers": { "srv0": { "listen": [":443"], "routes": [ { "handle": [ { "handler": "static_response", "body": "Hello {http.request.host}" } ] } ] } } }, "tls": { "automation": { "on_demand": { "rate_limit": { "interval": "2m", "burst": 5 }, "ask": "http://localhost:8080/check-domain" }, "policies": [ { "on_demand": true } ] } } } }

重要注意事项

按需证书的安全考虑

  1. 必须设置验证端点 (ask 参数):防止恶意域名申请证书
  2. 配置速率限制:防止证书申请滥用
  3. 域名白名单验证:确保只为授权域名申请证书

推荐配置

  • 生产环境建议使用具体域名配置而非按需证书
  • 按需证书适用于SaaS平台、动态子域名场景
  • 务必实现严格的域名验证逻辑
  • 监控证书申请频率和Let's Encrypt配额使用情况
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!