Я пытался создать соединение 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()
Спасибо!