Disable weak ciphers with cherrypy (python 2)

放肆的年华 提交于 2019-12-10 16:37:55

问题


I'm using Cherrypy 3.8.0 with Python 2 to use SSL/TLS using pyOpenSSL.

I want to disable SSL3 to avoid POODLE (or other weak ciphers).

Here's what I have so far:

  server_config={
          'server.socket_port': 443,
          'server.ssl_module':'pyopenssl',
          'server.ssl_certificate':'/path/myserver.crt',
          'server.ssl_private_key':'/path/myserver.key',
      }

This is similar to this question but for python 2 and pyopenssl.

How can I specify or exclude specific ciphers? Thanks!


回答1:


To disable SSL3, you should set the ssl_context variable yourself rather than accepting the default. Here's an example using Python's built-in ssl module (in lieu of the built-in cherrypy ssl module).

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)

where in this case, SSL is from the OpenSSL module.

It's worth noting that beginning in Python 3.2.3, the ssl module disables certain weak ciphers by default.

Furthermore, you can specifically set all the ciphers you want with

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

ctx.set_cipher_list(':'.join(ciphers))

If you're using the CherryPyWSGIServer from the web.wsgiserver module, you would set the default ciphers with

CherryPyWSGIServer.ssl_adapter.context.set_cipher_list(':'.join(ciphers))

Lastly, here are some sources (asking similar questions) that you may want to look at:

  • How to block SSL protocols in favor of TLS?
  • https://review.cloudera.org/r/4739/diff/
  • http://roadha.us/2014/10/disable-sslv3-avoid-poodle-attack-web-py/
  • http://blog.gosquadron.com/use-tls
  • http://www.experts-exchange.com/questions/28073251/Disable-weak-SSL-cipher-on-CherryPy-pyOpenSSL-Windows-2008-Server.html


来源:https://stackoverflow.com/questions/34832932/disable-weak-ciphers-with-cherrypy-python-2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!