Отключить TLS1.0 и TLS1.1 на Cherrypy, Python3 - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь отключить TLS1.0, TLS1.1, SSL2 и SSL3 на моем сервере cherrypy.Я видел другие стековые сообщения о потоке относительно того, как их отключить, однако, когда я следую за примерами кода, я получаю следующую ошибку «ValueError: должен быть указан certfile для операций на стороне сервера».Служба Windows все еще работает, однако я не могу загрузить ни одной страницы.Я также попытался добавить Certificate_chain, но это вообще не позволяет запускать 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,
    },
})

Ответы [ 2 ]

0 голосов
/ 06 июля 2019

myfile.cer в формате PEM?Согласно документации кажется, что PEM является типом файла по умолчанию, который может быть причиной ошибки.

Я также пытаюсь выяснить, как использовать ECDHE с Cherrypy, но с другими веб-серверами, чтобы использоватьECDHE должен быть файл кривой для генерации эфемерного ключа вместо файла статического ключа (стиль RSA).Похоже, что Cherrypy не имеет встроенных возможностей для файла кривых, поэтому это возможно только с pyOpenSSL.Команда для получения поддерживаемых кривых - OpenSSL.crypto.get_elliptic_curves(), и вы можете указать желаемую кривую с помощью context.set_tmp_ecdh(curve).

0 голосов
/ 25 июня 2019

Похоже, что могут быть некоторые проблемы в синтаксисе: ssl.OP_NO_TLSv1 s / b ssl.SSL.OP_NO_TLSv1 (согласно документации pyOpenSSL).Это влияет на все переменные OP *.

Ой, подождите ... nvrmd, что.

...