caddy免费证书自动续期
它是什么Caddy 是默认自动启用 HTTPS 的 Web 服务器,能为站点自动申请 Let's Encrypt 证书、在有效期剩余三分之一时自动续期并把 HTTP 跳转到 HTTPS,适合从 Nginx 或 acme.sh 迁移的站长与开发者
Caddy 是默认自动启用 HTTPS 的 Web 服务器,能为站点自动申请 Let's Encrypt 证书、在有效期剩余三分之一时自动续期并把 HTTP 跳转到 HTTPS,适合从 Nginx 或 acme.sh 迁移的站长与开发者。
详细介绍
简介
Caddy 是第一个也是唯一一个默认自动使用 HTTPS 的 Web 服务器,它会为配置中的所有站点签发 TLS 证书并持续保持更新,同时把 HTTP 请求重定向到 HTTPS。对于被证书续期折磨的站长、要给新项目配 HTTPS 的开发者,以及正在用 Nginx 手写证书路径或用 acme.sh 跑定时任务的运维人员,Caddy 把证书申请、续期、部署合并成一条随服务运行的链路,省掉手工跑脚本和反复改配置的环节。它的核心优势是配置项直接写实际生效的值、续期无需人工干预,站点数量越多省下的重复操作越明显。
核心功能
- 默认自动 HTTPS:Caddy 会为配置中的所有站点自动提供 TLS 证书并保持更新,不需要额外开启开关。
- 证书自动续期:Caddy 在证书有效期剩余 1/3 时开始尝试续期;Let's Encrypt 证书有效期 90 天,因此大约在第 60 天开始续,成功后由内部机制换上新证书。
- HTTP 自动跳转 HTTPS:证书就绪后,Caddy 会把同一站点的 HTTP 请求重定向到 HTTPS,不必再单独写一套跳转规则。
- 集成 Let's Encrypt:启动时自动为绑定的域名申请证书,替代 acme.sh 之类的签发脚本与定时任务。
- 反向代理与证书一体化:Caddy 作为前置服务器处理证书获取与续期,同时把请求转发给 Flask 等后端应用,后端自身不必配置 SSL。
- 配置量小:实践文章提到三行配置即可替代 Nginx 的手动 SSL 管理,配置写法围绕实际生效的值展开。
- 支持自有证书:除自动签发外,也可把 domain-ca.pem、domain-chain.pem、domain-root.pem 等文件上传到服务器目录后在配置中引用。
使用场景
- 新项目上线:域名解析到服务器后直接写站点配置,Caddy 启动即签发证书并开启 HTTPS。
- 从 Nginx 手动管理 SSL 迁出:不再维护证书路径与续期提醒,由 Caddy 统一接管签发与续期。
- 替代 acme.sh 申请免费证书:省去脚本参数与定时任务维护,签发和续期都收进 Web 服务本身。
- 反向代理后端应用:Caddy 在前面处理证书,请求转发到 Flask 等应用,后端继续监听 HTTP。
- 老站升级到 Caddy 2:新版默认开启 HTTPS 证书签发与 HTTP 跳转,配置结构变化较大,适合借迁移一并整理。
- 使用商业 CA 证书的站点:证书文件上传到服务器目录后由 Caddy 加载,与自动签发的站点共存于同一配置。
安装与获取步骤
- 打开 https://github.com/caddyserver/caddy 查看仓库说明与文档,获取方式与发布渠道以官方页面为准。
- 准备一个已解析到目标服务器的域名,确认 80 与 443 端口可从外网访问,Let's Encrypt 的验证依赖 HTTP 路径可达。
- 编写站点配置:写入域名与后端服务地址,Caddy 据此自动开启 HTTPS 并生成 HTTP 到 HTTPS 的跳转。
- 启动 Caddy,用 https://域名 访问一次,确认证书已签发、浏览器无告警,且原 HTTP 地址会跳转到 HTTPS。
- 若使用自有证书,先在服务器上准备存放证书的目录,上传 domain-ca.pem、domain-chain.pem、domain-root.pem 等文件,再在配置中引用对应路径。
- 若从 Nginx 或 acme.sh 迁移,先停用原有的续期脚本与证书路径,改由 Caddy 统一管理,避免两套续期逻辑互相覆盖。
与同类方案的区别
围绕免费证书自动续期,可选方案大致分两类:一类是把证书管理做成独立平台,例如 dromara/domain-admin(域名 SSL 证书监测,支持 Let's Encrypt 免费申请与自动续期,界面支持中文、英文)、certd(全自动申请、更新、续期,支持通配符与泛域名证书,可部署到云主机、面板与群晖)、Certimate(自动申请、部署、续期,可私有部署)、ALLinSSL(监控证书有效期并提前 30 天自动续期);另一类是把能力内置在 Web 服务器里,Caddy 属于后者。
- 独立平台适合需要集中监测大量域名、跨多台服务器下发证书的团队,监测与签发职责分离。
- Caddy 适合站点数量不多、证书跟随站点配置走的场景,不必额外部署和维护一套管理系统。
- 脚本类方案需要自己维护定时任务与部署命令,Caddy 把签发与续期收进服务进程,随服务运行。
- 如果只想监测提醒而不接管签发,可以选用 domain-admin 这类监测平台,与 Caddy 并不冲突。
注意事项
- Let's Encrypt 证书有效期 90 天,续期在剩余 1/3 时触发,这段时间服务器需在线、域名解析正确,否则续期会失败。
- Caddy 2 的配置文件结构相比旧版变化较大,迁移前请通读官方文档,不要直接沿用旧写法。
- 默认行为包含 HTTPS 与 HTTP 跳 HTTPS,本地调试或后端只监听 HTTP 时要留意请求被跳转的问题。
- 使用自有证书文件时,更新时机由签发方决定,需自行核对有效期,具体规则以官方页面为准。
- 涉及版本号、参数、发布渠道等信息,均以官方页面为准,本文不给出未经核实的数值。
更新记录
最近更新:2026-10-04
软件参数速览
下载
常见问题
Caddy 什么时候会自动续期证书?
当证书有效期剩余 1/3 时开始尝试续期。Let's Encrypt 证书有效期 90 天,因此大约在第 60 天开始续,成功后由 Caddy 内部机制换上新证书,全程无需人工干预。
从 Nginx 迁到 Caddy,配置要改多少?
实践文章提到三行配置即可替代 Nginx 的手动 SSL 管理。但 Caddy 2 的配置结构变化较大,迁移前建议通读官方文档,不要把旧写法直接套用过来。
能用 Caddy 替代 acme.sh 申请免费证书吗?
可以。Caddy 集成 Let's Encrypt,启动时自动为绑定域名申请并续期证书,省掉签发脚本与定时任务,详细步骤可参考 https://developer.aliyun.com/article/1321805。
后端是 Flask 这类应用,Caddy 能直接代理吗?
可以。Caddy 作为前置 Web 服务器处理证书的获取与续期,同时把 HTTPS 请求转发到 Flask 应用,后端本身不需要再配置 SSL 证书。
已有商业 CA 签发的证书,能放到 Caddy 用吗?
可以走手动方式:把 domain-ca.pem、domain-chain.pem、domain-root.pem 等文件上传到服务器上存放证书的目录,再在配置中引用,参考 https://docs.certcloud.cn/docs/installation/manual/caddy/。
和 domain-admin、certd、Certimate 比,Caddy 定位有什么不同?
后者是独立的证书监测或自动化平台,可集中监测多域名、申请通配符证书并下发到云主机与面板;Caddy 则把证书能力内置在 Web 服务器里,随站点配置一起管理。
开了自动 HTTPS 之后,http:// 访问会怎样?
Caddy 会把 HTTP 请求重定向到 HTTPS。若站点暂时只能提供 HTTP,例如本地调试环境,需要在配置中明确关闭相关行为,否则访问会一直被跳转。
证书没签下来或续期失败,先查什么?
先确认域名解析已指向该服务器、80 端口从外网可达,因为验证走 HTTP 路径;再查看 Caddy 启动与运行日志中的报错,具体排查步骤以官方文档为准。