菜单

证书管理

相关源文件

本页面介绍了 Caddy 全面的证书管理系统,包括基于 ACME 的证书颁发、自动化续订、存储机制以及与证书颁发机构的集成。该系统处理 TLS 证书从初始配置到续订和撤销的整个生命周期。

有关 TLS 连接策略和密码配置的信息,请参阅连接策略。有关自动 HTTPS 启用详情,请参阅自动 HTTPS

概述

Caddy 的证书管理围绕使用 ACME 协议的自动化证书生命周期管理构建。该系统与 CertMagic 库集成,可跨不同的证书颁发机构和挑战类型提供无缝的证书配置、续订和存储。

证书管理架构

来源:modules/caddytls/tls.go50-143 modules/caddytls/automation.go36-82 modules/caddytls/acmeissuer.go44-118

ACME 证书颁发

ACMEIssuer 是从与 ACME 兼容的证书颁发机构获取证书的主要机制。它实现了 ACME 协议 (RFC 8555) 并支持多种挑战验证方法。

ACME 证书颁发流程

ACME 颁发者配置包括几个关键组件

组件目的配置字段
CA 目录ACME 服务器端点iss.CA
账户密钥ACME 账户私钥iss.AccountKey
外部账户绑定CA 提供的凭据iss.ExternalAccount
挑战配置挑战方法设置iss.Challenges
证书生命周期请求的证书有效期iss.CertificateLifetime

来源:modules/caddytls/acmeissuer.go44-118 modules/caddytls/acmeissuer.go208-270 modules/caddytls/acmeissuer.go286-299

挑战验证方法

Caddy 支持所有三种标准 ACME 挑战类型,每种类型都有特定的配置选项和用例。

HTTP 挑战

HTTP 挑战通过在特定 URL 路径提供令牌来验证域名所有权。

HTTP 挑战配置

来源:modules/caddytls/automation.go459-470 modules/caddytls/acmeissuer.go234-238

TLS-ALPN 挑战

TLS-ALPN 挑战通过使用 acme-tls/1 ALPN 协议的特殊 TLS 握手来验证域名所有权。

TLS-ALPN 挑战流程

来源:modules/caddytls/automation.go472-483 modules/caddytls/acmeissuer.go239-242

DNS 挑战

DNS 挑战通过创建特定的 DNS TXT 记录来验证域名所有权。

DNS 挑战配置与流程

来源:modules/caddytls/automation.go485-516 modules/caddytls/acmeissuer.go243-245 modules/caddytls/acmeissuer.go152-183

自动化策略

自动化策略决定哪些证书被自动管理,以及它们在整个生命周期中如何被处理。

自动化策略架构

策略系统采用“首次匹配”方法,即应用第一个与证书主题匹配的策略

策略类型目的关键配置
默认公共公共域名证书ACME 颁发者(Let's Encrypt, ZeroSSL)
默认内部内部/IP 证书内部颁发者(自签名)
自定义策略特定域名配置用户定义的颁发者和设置

来源:modules/caddytls/automation.go84-176 modules/caddytls/automation.go178-366 modules/caddytls/tls.go280-311

证书存储和缓存

Caddy 使用两层存储系统,其中内存缓存由持久存储支持。

证书存储架构

证书缓存提供以下几个关键功能

  • 快速证书检索:用于 TLS 握手的内存缓存
  • 自动续订:基于过期时间的后台续订
  • OCSP 装订:自动 OCSP 响应缓存和刷新
  • 存储清理:定期清理过期证书

来源:modules/caddytls/tls.go188-212 modules/caddytls/tls.go244-267 modules/caddytls/tls.go665-703

证书续订和生命周期管理

证书续订通过 CertMagic 的续订机制自动处理,具有可配置的间隔和续订窗口。

证书生命周期管理

关键生命周期管理间隔和设置

组件默认间隔配置字段
续订检查10 分钟RenewCheckInterval
OCSP 检查1 小时OCSPCheckInterval
存储清理24 小时StorageCleanInterval
续订窗口证书生命周期的 1/3RenewalWindowRatio

来源:modules/caddytls/automation.go55-78 modules/caddytls/tls.go424-443 modules/caddytls/tls.go665-703

证书颁发机构集成

Caddy 通过标准化接口和提供商特定优化与多个证书颁发机构集成。

证书颁发机构集成

特殊集成功能

  • ZeroSSL EAB 自动生成:自动为 ZeroSSL 生成外部账户绑定凭据
  • 证书链选择:当提供多个证书链时,可配置证书链选择偏好
  • 自定义根 CA:支持私有/内部 CA 的自定义受信任根证书

来源:modules/caddytls/acmeissuer.go258-267 modules/caddytls/acmeissuer.go314-372 modules/caddytls/automation.go402-428

按需证书管理

按需 TLS 允许在 TLS 握手期间为以前未知的域名颁发证书,并具有可配置的权限控制。

按需 TLS 安全架构

按需 TLS 需要仔细的安全配置以防止滥用

安全控制目的实现
权限模块验证证书请求OnDemandPermission 接口
通配符保护防止不受限制的通配符颁发策略验证
仅限管理器模式限制为外部证书管理器hadExplicitManagers 检查
请求日志记录跟踪证书请求模式远程 IP 日志记录

来源:modules/caddytls/automation.go264-333 modules/caddytls/tls.go270-279 modules/caddytls/ondemand.go (在 automation.go 中引用)