TLS1.2 рукопожатие на записи TLS1 Python SSL - PullRequest
0 голосов
/ 04 марта 2019

Я пытался создать соединение TLSv1.2 с сервером с модулем ssl в python.Мне удалось изменить версию рукопожатия TLS на ту, которую я хотел (TLSv1.2).Но независимо от того, как я пытался настроить свой SSLContext, я смог создать только Client Hello с уровнем записи TLSv1.

Я видел эту проблему , которая заставила меня понять, почему я терпел неудачу, но я сейчас застрял.Поскольку сервер, к которому я пытаюсь подключиться, принимает только слои записи TLSv1.2 и немедленно завершает соединение без сообщения об ошибке, если это не так.Так есть ли скрытый способ изменить версию слоя записи, или я буду искать другие языки для более гибкой реализации / попытаться сделать свою собственную дурацкую реализацию?

ssl.OPENSSL_VERSION возвращает OpenSSL 1.1.0j 20 Nov 2018, и я запускаю python3.7.2

мой код:

#!/usr/bin/env python3

import ssl
import socket

context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
context.options |= ssl.OP_NO_SSLv3
context.options |= ssl.OP_NO_TLSv1
context.options |= ssl.OP_NO_TLSv1_1
context.set_ciphers("AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA")
context.options |= ssl.OP_NO_COMPRESSION
context.verify_mode = ssl.CERT_REQUIRED

s = socket.socket(socket.AF_INET)

conn = context.wrap_socket(s, server_hostname="address")

conn.connect(('address', 443))

conn.close()

Спасибо!

...