# Caddy TLS 配置生成器（Caddyfile）

> 生成 Caddyfile 的 tls 配置：协议、密码套件、HSTS 和自有证书文件。Caddy 2.10+ 默认已支持 X25519MLKEM768。

Source: https://ssl.sh/zh/tools/tls-config-generator/caddy/
Last updated: 2026-11-10

生成指定 TLS 协议和套件、带 HSTS 的 Caddyfile，也可以改用自己购买的证书代替自动 HTTPS。

[TLS 配置生成器](https://ssl.sh/zh/tools/tls-config-generator/)的 Caddy 预设给 Caddyfile 补上明确的 TLS 设置。Caddy 本身已经做了大部分工作：自动申请证书、自动跳转 HTTPS、默认配置也很安全。生成器补充了明确的协议和套件设置、HSTS 头，以及使用自有证书文件的写法。

## 示例：中级档

```text
example.com {
    tls {
        protocols tls1.2 tls1.3
        ciphers TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
    }
    header Strict-Transport-Security "max-age=63072000; includeSubDomains"
    root * /var/www/example.com
    file_server
}
```

只开 TLS 1.3 时写 `protocols tls1.3`，并去掉 `ciphers` 行：Caddy 用 Go 编写，Go 里 TLS 1.3 的套件不能配置。

## 版本说明

- 这个写法需要 Caddy 2。
- Caddy 2.10+ 会和支持的客户端（新版 Chrome、Firefox、Safari）协商 X25519MLKEM768，不需要任何设置。
- Caddy 不提供 TLS 1.0/1.1，“兼容旧版”档会保留 TLS 1.2 并加入 CBC 套件。

## 校验并重载

```bash
caddy validate --config /etc/caddy/Caddyfile
caddy reload --config /etc/caddy/Caddyfile
```

用 [SSL 检查](https://ssl.sh/zh/tools/ssl-checker/)确认结果，它会显示协商出的密钥交换组。


## FAQ

**一定要写 tls 块吗？**

一般不用，Caddy 的默认值已经接近中级档。需要只开 TLS 1.3、合规要求固定套件列表、或使用自己的证书文件时再加。

**怎么用自己买的证书？**

在站点块里写 tls /path/fullchain.pem /path/privkey.pem。这样 Caddy 会使用这张证书，不再为这个站点通过 ACME 申请，续期要你自己负责。

**国内服务器上自动 HTTPS 能用吗？**

能，但要满足 ACME 验证条件：域名解析到这台服务器，80 或 443 端口能从公网访问。国内服务器用 80/443 对外提供网站服务通常还需要完成 ICP 备案。
