TLS 与 ACME
Service.TLS.Enabled 开启后:
| 事项 | 说明 |
|---|---|
| 签发 | ACME HTTP-01 质询:服务器在 HTTP 端口应答质询;站点注册携带域名时自动发起签发 |
| 续期 | 每日检查证书有效期,到期前 30 天自动续期 |
| 热加载 | 证书更新后热加载,不重启进程 |
| 跳转 | HTTP 端口将非质询、非管理流量 301 跳转到 HTTPS |
| 管理 | HTTP 端口(质询/跳转端口)同时服务管理 API(/api/v1/sites 子树)与健康探针:明文 HTTP、Bearer Token 校验,用于首个证书签发前的注册自举;Service.ManagementPort 设置时以独立端口额外监听,仅对内网开放 |
| 存储 | 证书落盘 DataDir/certs/<domain>/ |
| 端口 | Service.Port 即 HTTPS 监听端口;HTTP 质询与管理端口为 Service.TLS.HTTPPort |
ACME 账户邮箱在 Service.TLS.Email 配置;Service.TLS.DirectoryURL 指向 ACME 目录地址,联调时切换为 ACME staging 地址。
部署约束
HTTPS 端口与 HTTP 质询端口需可被公网访问,且 HTTPS 端口未被其他进程占用。Let's Encrypt 的 HTTP-01 验证固定回源域名的 80 端口:公网直连部署时 Service.TLS.HTTPPort 保持缺省 80;反向代理或端口映射部署时,把外部 80 映射到本地自定义的 HTTPPort。
首个带域名站点注册前服务器没有任何证书,HTTPS 端口无法完成 TLS 握手;首次注册走 HTTP 端口(Service.TLS.HTTPPort,缺省 80),该端口同时服务管理 API,证书签发后 HTTPS 生效。管理 API 在 HTTP 端口上以明文传输、仅由 Bearer Token 保护,公网部署时可改用 Service.ManagementPort 指定仅对内网开放的管理端口。质询应答端点的契约见独立 API 参考文档站,站内搜索 ?acme。
