【问题标题】:Disable TLS 1.3 in Twisted Python在 Twisted Python 中禁用 TLS 1.3
【发布时间】:2021-07-06 14:00:42
【问题描述】:

如何在 Twisted 服务器中禁用 TLS 1.3?这是我的代码应该禁用 TLS 1.3,但没有:

from twisted.internet import ssl

ciphers = ssl.AcceptableCiphers.fromOpenSSLCipherString(
    "ECDHE-RSA-AES128-GCM-SHA256:AES128-SHA"
)

tls_options = ssl.CertificateOptions(
    privateKey=my_key,
    certificate=my_cert,
    extraCertChain=my_cert_chain,
    acceptableCiphers=ciphers,
    lowerMaximumSecurityTo=ssl.TLSVersion.TLSv1_2
)

listening_port = my_reactor.listenSSL(8000, my_factory, tls_options)

我添加了lowerMaximumSecurityTo=ssl.TLSVersion.TLSv1_2,但这似乎禁用了 TLS 1.2 (!) 并使 TLS 1.3 可用。结果如下:

 SSLv2      not offered (OK)
 SSLv3      not offered (OK)
 TLS 1      offered (deprecated)
 TLS 1.1    offered (deprecated)
 TLS 1.2    not offered and downgraded to a weaker protocol
 TLS 1.3    offered (OK): final

删除lowerMaximumSecurityTo=ssl.TLSVersion.TLSv1_2 或更改为TLSv1_3 后,TLS 1、1.1、1.2 和 1.3 均报告为受支持。

我正在使用来自 https://testssl.sh/dev/ 的 testssl.sh 3.1dev 对此进行测试

我正在使用 Ubuntu 18.04,包括他们的 Twisted、OpenSSL、Python3 等软件包。

【问题讨论】:

    标签: ssl openssl twisted tls1.3


    【解决方案1】:

    这是由于将旧的 Python OpenSSL 包与现代 OpenSSL 本机库混合在一起造成的。两者都由 Ubuntu 18.04 提供。修复方法是更新 Python OpenSSL 包,使用 PIP 而不是系统包。

    为什么会失败:

    • OpenSSL 本机库默认启用 TLS 1.3。
    • 旧的 Python OpenSSL 包不公开关闭 TLS 1.3 所需的常量。
    • 现代 Twisted 检查 OpenSSL Python 包,发现它没有公开关闭 TLS 1.3 所需的常量,并错误地假设 OpenSSL 本机库不支持 TLS 1.3。它没有对此提供任何警告。

    【讨论】:

      猜你喜欢
      • 2020-03-22
      • 2012-07-12
      • 2014-11-11
      • 2020-04-12
      • 2019-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多