使用cherrypy(python 2)禁用弱密码

jre*_*rel 4 python ssl openssl cherrypy python-2.7

我正在使用带有Python 2的Cherrypy 3.8.0来使用pyOpenSSL来使用SSL/TLS.

我想禁用SSL3以避免POODLE(或其他弱密码).

这是我到目前为止所拥有的:

  server_config={
          'server.socket_port': 443,
          'server.ssl_module':'pyopenssl',
          'server.ssl_certificate':'/path/myserver.crt',
          'server.ssl_private_key':'/path/myserver.key',
      }
Run Code Online (Sandbox Code Playgroud)

这与此问题类似,但对于python 2和pyopenssl.

如何指定或排除特定密码?谢谢!

Mic*_*nas 6

要禁用SSL3,您应该ssl_context自己设置变量,而不是接受默认值.这是使用Python的内置ssl模块(代替内置的cherrypyssl模块)的示例.

import cherrypy
from OpenSSL import SSL

ctx = SSL.Context(SSL.SSLv23_METHOD)
ctx.set_options(SSL.OP_NO_SSLv2 | SSL.OP_NO_SSLv3)

...

server_config = {
    'server.socket_host': '0.0.0.0',
    'server.socket_port': 443,
    'server.ssl_context': ctx
}

cherrypy.config.update(server_config)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,SSL来自OpenSSL模块.

值得注意的是,从Python 3.2.3开始,该ssl模块默认禁用某些弱密码.

此外,您可以专门设置所需的所有密码

ciphers = {
    'DHE-RSA-AE256-SHA',
    ...
    'RC4-SHA'
}

ctx.set_cipher_list(':'.join(ciphers))
Run Code Online (Sandbox Code Playgroud)

如果您使用的CherryPyWSGIServerweb.wsgiserver模块,则可以设置默认密码

CherryPyWSGIServer.ssl_adapter.context.set_cipher_list(':'.join(ciphers))
Run Code Online (Sandbox Code Playgroud)

最后,您可能需要查看以下内容(询问类似问题):

  • 您使用的是哪种浏览器?您可能会发现此链接(来自我的回答)很有用:http://stackoverflow.com/a/29304038/4760801 (2认同)