Traefik TLS 选项文档
TLS 选项
TLS 选项允许你配置 TLS 连接的一些参数。
default TLS 选项
default 选项是特殊的。当 TLS 路由器中未指定 TLS 选项时,将使用 default 选项。
显式指定 default 选项时,确保不要指定 Provider 命名空间,因为 default 选项没有命名空间。
相反,对于跨 Provider 引用(例如从 Docker label 引用文件 Provider),必须指定 Provider 命名空间,例如:traefik.http.routers.myrouter.tls.options=myoptions@file。
Providers
基于 label 或 tag 的 Provider 不支持 TLS 选项。但是,使用 KV Provider 时可以定义它们。
配置示例
最小 TLS 版本
yaml
# 动态配置
tls:
options:
default:
minVersion: VersionTLS12
mintls13:
minVersion: VersionTLS13toml
# 动态配置
[tls.options]
[tls.options.default]
minVersion = "VersionTLS12"
[tls.options.mintls13]
minVersion = "VersionTLS13"配置多个选项
yaml
tls:
options:
default:
minVersion: VersionTLS12
maxVersion: VersionTLS13
cipherSuites:
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
curvePreferences:
- CurveP521
- CurveP384
alpnProtocols:
- h2
- http/1.1SNIStrict 与默认证书
default 选项可以设置 sniStrict 来禁止不带 SNI 的连接。
配置选项
| 字段 | 描述 | 默认值 |
|---|---|---|
minVersion | 最小 TLS 版本。 | VersionTLS10 |
maxVersion | 最大 TLS 版本。 | VersionTLS13 |
cipherSuites | 允许的 TLS 密码套件列表。 | - |
curvePreferences | 椭圆曲线偏好列表。 | - |
alpnProtocols | 允许的 ALPN 协议列表。 | h2, http/1.1 |
sniStrict | 启用 SNI 严格模式(不接受没有 SNI 的连接)。 | false |
clientAuth | 启用 mTLS 客户端认证。 | - |
clientAuth.clientAuthType | NoClientCert、RequestClientCert、RequireAnyClientCert、VerifyClientCertIfGiven、RequireAndVerifyClientCert。 | - |
clientAuth.caFiles | 用于客户端认证的 CA 证书。 | - |
适用场景
- 安全合规:满足 PCI DSS、HIPAA 等合规性要求
- 启用 mTLS:双向 TLS 认证
- TLS 强化:禁用老旧的 TLS 版本和弱密码
- ALPN 配置:优化协议选择
在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。