У меня есть код, как показано ниже:SSL контекст для старых питона версии
headers = {'content-type': 'ContentType.APPLICATION_XML'}
uri = "www.client.url.com/hit-here/"
clientCert = "path/to/cert/abc.crt"
clientKey = "path/to/key/abc.key"
PROTOCOL = ssl.PROTOCOL_TLSv1
context = ssl.SSLContext(PROTOCOL)
context.load_default_certs()
context.load_cert_chain(clientCert, clientKey)
conn = httplib.HTTPSConnection(uri, some_port, context=context)
Я не являюсь на самом деле сетевым программистом, так что я сделал некоторые прибегая к помощи для подключения рукопожатия и нашел ssl.SSLContext(PROTOCOL)
как необходимую функцию, код работает отлично ,
Затем я попал в блокпост, у меня в локальной версии версия 2.7.10, но у всех ящиков для производства есть 2.7.3, поэтому SSLContext
не поддерживается и обновление версии python не является опцией/в управлении.
Я пробовал читать ssl — SSL wrapper for socket objects, но не мог понять.
, что я пытался (напрасно):
s_ = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s = ssl.wrap_socket(s_, keyfile=clientKey, certfile=clientCert, cert_reqs=ssl.CERT_REQUIRED)
new_conn = s.connect((uri, some_port))
но возвращается:
SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)')
Вопрос - как генерировать SSL контекст на старую версию, чтобы иметь безопасную HTTPS связь?
Я не думаю, что старая версия может работать с контекстом. Пробовали ли вы создать соединение https с указанием сертификатов, т. Е. Conn = httplib.HTTPSConnection (хост, порт, key_file, cert_file, строгий, таймаут) –