为 Traefik 推荐的 TLS 密码
Recommended TLS Ciphers for Traefik
我正在寻找 Traefik 中 SSL/TLS 的推荐配置。我已经设置 minVersion = "VersionTLS12"
以避免较弱的旧版本并找到 supported ciphers in Go. Cross-checking that with the recommendations from SSLLabs 我想出了以下顺序(顺序很重要):
cipherSuites = [
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"
]
[更新] 后来与 Mozilla 的 SSL Config Generator 进行交叉检查,删除 SHA-1 并使用建议的顺序:
cipherSuites = [
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305",
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305",
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"
]
这有意义吗?我想避免弱密码,但为了兼容性尽可能多地包含强密码。
看起来不错。我 运行 与您的更新中的配置相同,根据 SSL 实验室测试,一切看起来都安全且兼容。
05-07-19 更新:
根据 SSL 实验室,CBC 密码现在也很弱。您可以删除这些,但是如果您的证书是使用 RSA 签名的,您将无法使用 Windows 在 IE 11 上查看您的网站 7. 我使用上面的当前密码(没有 CBC)使用 ECDSA 签署了我的证书以让它在 IE 11 上运行 Windows 7.
您可以使用此页面生成您的 traefik 配置:https://ssl-config.mozilla.org/#server=traefik&server-version=1.7.12&config=intermediate
# generated 2019-07-17, https://ssl-config.mozilla.org/#server=traefik&server-version=1.7.12&config=intermediate
defaultEntryPoints = ["http", "https"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
minVersion = "VersionTLS12"
cipherSuites = [
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256"
]
[[entryPoints.https.tls.certificates]]
certFile = "/path/to/signed_cert_plus_intermediates"
keyFile = "/path/to/private_key"
编辑:如下面链接的问题所述,配置生成器已修复。
我在研究 Traefik 的密码套件时发现了这个问题。所以,供日后参考,以及尝试过生成器但 运行 遇到问题的人:
我找到了 Mozilla 的 ssl-config 页面,Rui Martins 也提到了。这工作正常,除了最后四个条目。
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
不被 Traefik 识别为有效的密码套件。
我查看了 Go 文档,发现那里也没有提到密码套件。然而,提到了相对接近的替代方案:https://godoc.org/crypto/tls#pkg-constants
所以我将值替换如下:
+-----------------------------------------------+----------------------------------------+
| Old Value | New Value |
+-----------------------------------------------+----------------------------------------+
| TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 | TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 |
+-----------------------------------------------+----------------------------------------+
| TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 | TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 |
+-----------------------------------------------+----------------------------------------+
| TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 |
+-----------------------------------------------+----------------------------------------+
| TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 |
+-----------------------------------------------+----------------------------------------+
请注意前两个条目已删除 _SHA256
,后两个条目已添加 EC
。
这工作正常,但不是核心问题的解决方案。由于我在密码套件方面没有太多的知识或经验,我已经向 Mozilla 提交了一份关于他们为 Traefik 生成 ssl-config 的错误报告。 ( https://github.com/mozilla/ssl-config-generator/issues/52 )
我正在寻找 Traefik 中 SSL/TLS 的推荐配置。我已经设置 minVersion = "VersionTLS12"
以避免较弱的旧版本并找到 supported ciphers in Go. Cross-checking that with the recommendations from SSLLabs 我想出了以下顺序(顺序很重要):
cipherSuites = [
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"
]
[更新] 后来与 Mozilla 的 SSL Config Generator 进行交叉检查,删除 SHA-1 并使用建议的顺序:
cipherSuites = [
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305",
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305",
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"
]
这有意义吗?我想避免弱密码,但为了兼容性尽可能多地包含强密码。
看起来不错。我 运行 与您的更新中的配置相同,根据 SSL 实验室测试,一切看起来都安全且兼容。
05-07-19 更新:
根据 SSL 实验室,CBC 密码现在也很弱。您可以删除这些,但是如果您的证书是使用 RSA 签名的,您将无法使用 Windows 在 IE 11 上查看您的网站 7. 我使用上面的当前密码(没有 CBC)使用 ECDSA 签署了我的证书以让它在 IE 11 上运行 Windows 7.
您可以使用此页面生成您的 traefik 配置:https://ssl-config.mozilla.org/#server=traefik&server-version=1.7.12&config=intermediate
# generated 2019-07-17, https://ssl-config.mozilla.org/#server=traefik&server-version=1.7.12&config=intermediate
defaultEntryPoints = ["http", "https"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
minVersion = "VersionTLS12"
cipherSuites = [
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256"
]
[[entryPoints.https.tls.certificates]]
certFile = "/path/to/signed_cert_plus_intermediates"
keyFile = "/path/to/private_key"
编辑:如下面链接的问题所述,配置生成器已修复。
我在研究 Traefik 的密码套件时发现了这个问题。所以,供日后参考,以及尝试过生成器但 运行 遇到问题的人:
我找到了 Mozilla 的 ssl-config 页面,Rui Martins 也提到了。这工作正常,除了最后四个条目。
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
不被 Traefik 识别为有效的密码套件。
我查看了 Go 文档,发现那里也没有提到密码套件。然而,提到了相对接近的替代方案:https://godoc.org/crypto/tls#pkg-constants
所以我将值替换如下:
+-----------------------------------------------+----------------------------------------+
| Old Value | New Value |
+-----------------------------------------------+----------------------------------------+
| TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 | TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 |
+-----------------------------------------------+----------------------------------------+
| TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 | TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 |
+-----------------------------------------------+----------------------------------------+
| TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 |
+-----------------------------------------------+----------------------------------------+
| TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 |
+-----------------------------------------------+----------------------------------------+
请注意前两个条目已删除 _SHA256
,后两个条目已添加 EC
。
这工作正常,但不是核心问题的解决方案。由于我在密码套件方面没有太多的知识或经验,我已经向 Mozilla 提交了一份关于他们为 Traefik 生成 ssl-config 的错误报告。 ( https://github.com/mozilla/ssl-config-generator/issues/52 )