У меня есть простой клиент TLS на python, работающий в Ubuntu 18.04 и openssl версии 1.1.0g.Клиент поддерживает один набор шифров.Я получаю сообщение об ошибке при попытке подключиться к серверу TLS 1.0.Набор шифров не поддерживается сервером.Я знаю, что причина ошибки, скорее всего, связана с отсутствием несоответствия шифровальных наборов, но я ищу более значимую ошибку для пользователя в этом случае.Ошибка, которую я получаю в данный момент, указывает на SSLv3, который ни клиент, ни сервер не имеют никакого отношения к SSLv3.Клиент отключает SSLv3 и сервер.Это ошибка:
[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:833)
Мой вопрос таков: мне нужно более качественное сообщение об ошибке, например, например (отсутствие несоответствия шифровального набора или что-то подобное относится к проблеме шифровального набора).Есть ли?Конечно, я мог написать свое собственное сообщение, но соединение с сокетом может прерваться по разным причинам, и я не могу сделать общую ошибку, которая всегда говорит «несоответствие шифров».
Это клиентский скрипт:
import socket,ssl
import itertools
context = ssl.SSLContext()
context.verify_mode = ssl.CERT_NONE
context.check_hostname = False
ciphers = "ECDHE-ECDSA-AES128-GCM-SHA256"
context.set_ciphers(ciphers)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
domainName = "privatedomain.com"
sslSocket = context.wrap_socket(s, server_hostname = domainName)
try:
sslSocket.connect((domainName, 443))
except (ssl.SSLError, ssl.SSLEOFError, ssl.CertificateError,ssl.SSLSyscallError, ssl.SSLWantWriteError, ssl.SSLWantReadError,ssl.SSLZeroReturnError) as e:
print("Error: ",e)
sslSocket.close()