推荐用于 Traefik 的 TLS 密码

Chr*_*rti 9 encryption ssl tls1.2 traefik

我正在寻找 Traefik 中 SSL/TLS 的推荐配置。我已经设置minVersion = "VersionTLS12"避免使用较弱的旧版本,并在 Go 中找到了支持的密码。与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"
]
Run Code Online (Sandbox Code Playgroud)

[更新] 后来与 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"
]
Run Code Online (Sandbox Code Playgroud)

那有意义吗?我想避免使用弱密码,但为了兼容性而包含尽可能多的强密码。

Rui*_*ins 8

您可以使用此页面生成您的 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"
Run Code Online (Sandbox Code Playgroud)


Ewo*_*out 5

编辑:如下面链接的问题所述,配置生成器已修复。

我在研究 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
Run Code Online (Sandbox Code Playgroud)

不被 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  |
+-----------------------------------------------+----------------------------------------+
Run Code Online (Sandbox Code Playgroud)

注意_SHA256前两个条目的删除,以及EC最后两个条目的添加。

这工作正常,但不是核心问题的解决方案。由于我在密码套件方面没有很多知识或经验,我已向 Mozilla 提交了关于他们为 Traefik 生成 ssl-config 的错误报告。( https://github.com/mozilla/ssl-config-generator/issues/52 )


小智 2

看起来不错。我正在运行与您的更新中相同的配置,根据 SSL 实验室测试,一切看起来都是安全且兼容的。

2019 年 5 月 7 日更新:

据 SSL 实验室称,CBC 密码现在也很弱。您可以删除这些证书,但如果您的证书是使用 RSA 签名的,您将无法在使用 Windows 7 的 IE 11 上查看您的网站。我使用上面的当前密码(没有 CBC)使用 ECDSA 签署了我的证书,以使其正常工作IE 11 Windows 7。