文档
一个 项目

自动 HTTPS

Caddy 是第一个也是唯一一个默认自动使用 HTTPS 的 Web 服务器。

自动 HTTPS 会为您的所有站点配置 TLS 证书并保持更新。它还会为您将 HTTP 重定向到 HTTPS!Caddy 使用安全和现代的默认设置 -- 无需停机、额外配置或单独的工具。

这是一个 28 秒的视频,展示了它如何工作:

菜单:

概述

默认情况下,Caddy 通过 HTTPS 服务所有站点。

  • Caddy 使用自签名证书通过 HTTPS 服务 IP 地址和本地/内部主机名,这些证书会自动在本地受信任(如果允许)。
    • 示例:localhost127.0.0.1
  • Caddy 使用来自公共 ACME CA(如 Let's Encrypt ZeroSSL )的证书通过 HTTPS 服务公共 DNS 名称。
    • 示例:example.comsub.example.com*.example.com

Caddy 保持所有管理的证书更新,并自动将 HTTP(默认端口 80)重定向到 HTTPS(默认端口 443)。

对于本地 HTTPS:

  • Caddy 可能会提示输入密码以将其唯一的根证书安装到您的信任存储中。这每个根证书只发生一次;您可以随时删除它。
  • 任何没有信任 Caddy 根 CA 证书的客户端访问站点时都会显示安全错误。

对于公共域名:

  • 如果您的域名 A/AAAA 记录指向您的服务器,
  • 端口 80443 在外部打开,
  • Caddy 可以绑定到这些端口(_或者_这些端口被转发到 Caddy),
  • 您的数据目录可写且持久,
  • 并且您的域名出现在配置的相关位置,

那么站点将自动通过 HTTPS 提供服务。您不需要做其他任何事情。它就是能工作!

因为 HTTPS 使用共享的公共基础设施,作为服务器管理员,您应该理解本页面上的其余信息,以便您可以避免不必要的问题,在问题发生时进行故障排除,并正确配置高级部署。

激活

当 Caddy 知道它正在服务的域名(即主机名)或 IP 地址时,它会隐式激活自动 HTTPS。根据您如何运行或配置 Caddy,有多种方式告诉 Caddy 您的域名/IP:

以下任何一种情况都会阻止自动 HTTPS 被完全或部分激活:

特殊情况:

  • .ts.net 结尾的域名不会由 Caddy 管理。相反,Caddy 将自动尝试在握手时从本地运行的 Tailscale 实例获取这些证书。这需要在您的 Tailscale 账户中启用 HTTPS ,并且 Caddy 进程必须以 root 身份运行,或者您必须配置 tailscaled 以给予您的 Caddy 用户获取证书的权限

效果

当自动 HTTPS 被激活时,会发生以下情况: