我已使用Python 3配置Cherrypy 3.8.0以使用SSL / TLS。但是,我想禁用SSL3以避免POODLE。我搜索了文档,但我不确定如何实现它。
我使用的是cherrypy / python内置ssl
模块,而不是我在Python 3中无法使用的pyOpenSSL
。
答案 0 :(得分:6)
要禁用SSL3,您应该自己设置ssl_context
变量,而不是接受默认值。以下是使用Python内置ssl
模块的示例(代替内置的cherrypy
ssl模块)。
import cherrypy
import ssl
ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
ctx.options |= ssl.OP_NO_SSLv2
ctx.options |= ssl.OP_NO_SSLv3
cherrypy.config.update(server_config)
在这种情况下,SSL
来自OpenSSL
模块。
值得注意的是,从Python 3.2.3开始,ssl
模块默认禁用某些弱密码。
此外,您可以使用
专门设置所需的所有密码ciphers = {
'DHE-RSA-AE256-SHA',
...
'RC4-SHA'
}
ctx.set_ciphers(':'.join(ciphers))
如果您使用CherryPyWSGIServer
模块中的web.wsgiserver
,则应使用
CherryPyWSGIServer.ssl_adapter.context.set_cipher_list(':'.join(ciphers))
以下是详细说明上述内容的文档的一部分:http://docs.cherrypy.org/en/latest/pkg/cherrypy.wsgiserver.html#module-cherrypy.wsgiserver.ssl_builtin
最后,您可能需要查看一些来源(提出类似问题):