【问题标题】:Disable TLS1.0 and TLS1.1 on Cherrypy, Python3在 Cherrypy、Python3 上禁用 TLS1.0 和 TLS1.1
【发布时间】:2019-11-03 16:53:28
【问题描述】:

我正在尝试在我的 cherrypy 服务器上禁用 TLS1.0、TLS1.1、SSL2 和 SSL3。我已经看到有关如何禁用它们的其他堆栈溢出帖子但是,当我按照代码示例进行操作时,我收到以下错误“ValueError:必须为服务器端操作指定证书文件”。 Windows 服务仍在运行,但我无法加载任何页面。我也尝试过添加证书链,但这会阻止cherrypy运行。

我正在将 cherrypy 作为 Windows 服务运行,python 3.4.4、cherrypy 5.0.1、pyOpenSSL 19.0.0。

我尝试过使用内置的 SSl 库和 pyOpenSSL,它们都会导致相同的错误。

import OpenSSL.SSL as ssl

context = ssl.Context(ssl.SSLv23_METHOD)
context.set_cipher_list('ECDHE-RSA-AES256-GCM-SHA384')
context.set_options(ssl.OP_NO_TLSv1 | ssl.OP_NO_TLSv1_1 | ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3)
context.use_privatekey_file('myfile.key')
context.use_certificate_file('myfile.cer')

cherrypy.config.update({
    'global':{
        'server.socket_host':'0.0.0.0',
        'server.socket_port': 0000, # https, however not using the port 443
        'server.ssl_context' : context,
    },
})

【问题讨论】:

    标签: python-3.x ssl openssl cherrypy


    【解决方案1】:

    看起来语法中可能存在一些问题:ssl.OP_NO_TLSv1 s/b ssl.SSL.OP_NO_TLSv1(根据 pyOpenSSL 文档)。这会影响所有 OP* 变量。

    哦,等等……nvrmd。

    【讨论】:

      【解决方案2】:

      myfile.cer 是 PEM 格式吗?根据文档,PEM 似乎是默认文件类型,这可能是导致错误的原因。

      我还试图弄清楚如何将 ECDHE 与 Cherrypy 一起使用,但要使用其他 Web 服务器来使用 ECDHE,需要一个曲线文件来生成临时密钥,而不是静态密钥文件(RSA 样式)。 Cherrypy 似乎没有内置的曲线文件功能,因此它可能只能使用 pyOpenSSL。获取支持曲线的命令是OpenSSL.crypto.get_elliptic_curves(),您可以使用context.set_tmp_ecdh(curve)指定您想要的曲线。

      【讨论】:

      • 我不是非常精通证书,但我发现这个“PEM 数据通常存储在带有“.pem”后缀、“.cer”或“.crt”后缀的文件中(对于证书)或“.key”后缀(用于公钥或私钥)。”这让我相信 myfile.cer 是可以接受的?我不确定文件是否必须是 .pem 或基于上面引用的句子 .cer 也是有效的
      • @chris 如果你用文本编辑器打开文件,它看起来像这样吗,[链接]images.app.goo.gl/WVe6AiTfj6VuLN2w5?这是一个很长的机会,因为 pyOpenSSL 在证书导入上抛出错误似乎很好。我认为问题可能是由于不推荐使用“server.ssl_context”。我在cherrypy 3.3之后的文档中找不到它。我还必须使用context.set_cipher_list(b'ECDHE-RSA-AES256-GCM-SHA384') 来测试您的代码。它接受了您的命令,但抛出了一个不再接受字符串的弃用警告。
      • 实际上这就是我打开 .cer 文件时的样子。抱歉响应慢,我最终将 nginx 放在了我的樱桃服务器前面,并在那里禁用了 TLS1.0、TLS1.1、SSL2 和 SSL3。
      猜你喜欢
      • 2022-06-29
      • 2017-12-11
      • 1970-01-01
      • 2022-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      • 2016-01-10
      相关资源
      最近更新 更多