自动 HTTPS
Caddy 是第一个也是唯一一个默认自动使用 HTTPS 的 Web 服务器。
自动 HTTPS 会为您的所有站点配置 TLS 证书并保持更新。它还会为您将 HTTP 重定向到 HTTPS!Caddy 使用安全和现代的默认设置 -- 无需停机、额外配置或单独的工具。
这是一个 28 秒的视频,展示了它如何工作:
菜单:
概述
默认情况下,Caddy 通过 HTTPS 服务所有站点。
- Caddy 使用自签名证书通过 HTTPS 服务 IP 地址和本地/内部主机名,这些证书会自动在本地受信任(如果允许)。
- 示例:
localhost
、127.0.0.1
- 示例:
- Caddy 使用来自公共 ACME CA(如 Let's Encrypt
或 ZeroSSL
)的证书通过 HTTPS 服务公共 DNS 名称。
- 示例:
example.com
、sub.example.com
、*.example.com
- 示例:
Caddy 保持所有管理的证书更新,并自动将 HTTP(默认端口 80
)重定向到 HTTPS(默认端口 443
)。
对于本地 HTTPS:
- Caddy 可能会提示输入密码以将其唯一的根证书安装到您的信任存储中。这每个根证书只发生一次;您可以随时删除它。
- 任何没有信任 Caddy 根 CA 证书的客户端访问站点时都会显示安全错误。
对于公共域名:
- 如果您的域名 A/AAAA 记录指向您的服务器,
- 端口
80
和443
在外部打开, - Caddy 可以绑定到这些端口(_或者_这些端口被转发到 Caddy),
- 您的数据目录可写且持久,
- 并且您的域名出现在配置的相关位置,
那么站点将自动通过 HTTPS 提供服务。您不需要做其他任何事情。它就是能工作!
因为 HTTPS 使用共享的公共基础设施,作为服务器管理员,您应该理解本页面上的其余信息,以便您可以避免不必要的问题,在问题发生时进行故障排除,并正确配置高级部署。
激活
当 Caddy 知道它正在服务的域名(即主机名)或 IP 地址时,它会隐式激活自动 HTTPS。根据您如何运行或配置 Caddy,有多种方式告诉 Caddy 您的域名/IP:
以下任何一种情况都会阻止自动 HTTPS 被完全或部分激活:
- 通过 JSON 或 Caddyfile 显式禁用它
- 在配置中不提供任何主机名或 IP 地址
- 仅监听 HTTP 端口
- 在 Caddyfile 中使用
http://
前缀的站点地址 - 手动加载证书(除非设置了
ignore_loaded_certificates
)
特殊情况:
- 以
.ts.net
结尾的域名不会由 Caddy 管理。相反,Caddy 将自动尝试在握手时从本地运行的 Tailscale实例获取这些证书。这需要在您的 Tailscale 账户中启用 HTTPS
,并且 Caddy 进程必须以 root 身份运行,或者您必须配置
tailscaled
以给予您的 Caddy 用户获取证书的权限。
效果
当自动 HTTPS 被激活时,会发生以下情况:
- 为所有符合条件的域名获取和更新证书