У меня проблема с правильной установкой флага SNI с использованием ssl.SSLContext в Python 2.7.10, рукопожатие терпит неудачу каждый раз, и я не могу понять, почему.SSLV3_ALERT_HANDSHAKE_FAILURE с SNI с использованием Tornado 4.2 в Python 2.9.10
Вот как я пытался сделать это:
import ssl
import socket
if ssl.HAS_SNI:
print "SNI is available"
print(ssl.OPENSSL_VERSION)
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
context.load_cert_chain('cacrt.pem', 'cakey.pem', 'password')
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock = context.wrap_socket(sock, server_hostname='virtServer')
sock.connect(('ip.to.the.server', 443))
http_client = tornado.httpclient.HTTPClient()
http_client.fetch('https://ip.to.the.server/some_url', method='GET', ssl_options=context)
А вот выход я получаю:
SNI is available
OpenSSL 0.9.8zd 8 Jan 2015
Traceback (most recent call last):
File "test/steps/test.py", line 37, in <module>
sock.connect(('10.59.71.242', 443))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 844, in connect
self._real_connect(addr, False)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 835, in _real_connect
self.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 808, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590)
Что я делаю неправильно, что вызывает эту ошибку? Как я могу изменить свой код для решения этой проблемы?
Любые идеи/помощь по этому вопросу будут высоко оценены.
Спасибо, С уважением, Яро