我在我的 docker 容器前运行 Traefik 作为反向代理,其中包括下面的配置文件。
我使用 SSLLabs 检查了我的服务器,发现它们似乎不支持 TLS 1.2。但是,当我将密钥类型更改为 4096 RSA 密钥而不是 EC256 密钥并重新生成证书时,TLS 1.2 又可以正常工作了。其余配置和 docker 标签保持不变。
这是预期的行为吗?TLS 1.2 不支持 EC256 吗?或者这是 Traefik 的问题?我正在运行 Traefik 版本 2.2.11。
静态配置:
---
ping: {}
log:
level: INFO
accesslog: {}
providers:
docker:
network: ${cfg.network_name}
exposedbydefault: false
file:
watch: true
filename: ${dynamic_config_file_target}
entryPoints:
web:
address: ':80'
http:
redirections:
entryPoint:
to: websecure
scheme: https
websecure:
address: ':443'
http:
middlewares:
- security-headers@file
- compress@file
tls:
certResolver: letsencrypt
certificatesresolvers:
letsencrypt:
acme:
email: ${cfg.acme.email_address}
storage: ${cfg.acme.storage}/acme.json
keyType: EC256
httpchallenge:
entrypoint: web
letsencrypt_dns:
acme:
email: ${cfg.acme.email_address}
storage: ${cfg.acme.storage}/acme.json
keyType: EC256
dnschallenge:
provider: 'route53'
动态配置:
---
http:
middlewares:
security-headers:
headers:
sslredirect: true
stsPreload: true
stsSeconds: ${toString (365 * 24 * 60 * 60)}
stsIncludeSubdomains: true
compress:
compress: {}
tls:
options:
default:
minVersion: "VersionTLS12"
sniStrict: true
cipherSuites:
- "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305"
- "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
- "TLS_CHACHA20_POLY1305_SHA256"
- "TLS_AES_256_GCM_SHA384"
答案1
问题不在于 Traefik,而在于您的配置:
cipherSuites:
- "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305"
- "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
这些是明确需要 RSA 认证(名称中的 RSA)的密码套件,因此需要 RSA 证书,因此不能与 ECC 证书一起使用。
- "TLS_CHACHA20_POLY1305_SHA256"
- "TLS_AES_256_GCM_SHA384"
这些是 TLS 1.3 密码套件。虽然它们可以与 ECC 证书一起使用,但它们也不能与 TLS 1.2 一起使用,只能与 TLS 1.3 一起使用。
一般来说,建议您不要明确配置任何密码套件,除非您真正知道自己在做什么。