SSL: SSLV3_ALERT_HANDSHAKE_FAILURE SSLV3-Alert-Handshake-Fehler (_ssl.c:833)Python

Python-Programme
Anonymous
 SSL: SSLV3_ALERT_HANDSHAKE_FAILURE SSLV3-Alert-Handshake-Fehler (_ssl.c:833)

Post by Anonymous »

Ich habe einen einfachen TLS-Client in Python, der unter Ubuntu 18.04 und OpenSSL-Version 1.1.0g läuft. Der Client unterstützt eine einzelne Ciphersuite. Ich erhalte eine Fehlermeldung, wenn ich versuche, eine Verbindung zu einem TLS 1.0-Server herzustellen. Die Cipher Suite wird vom Server nicht unterstützt. Ich weiß, dass der Grund für den Fehler höchstwahrscheinlich in der fehlenden Nichtübereinstimmung der Ciphersuite liegt, aber ich suche in diesem Fall nach einem aussagekräftigeren Fehler für den Benutzer. Der Fehler, den ich derzeit erhalte, verweist auf SSLv3, was weder für den Client noch für den Server etwas mit SSLv3 zu tun hat. Der Client deaktiviert SSLv3 und auch den Server. Dies ist der Fehler:

Code: Select all

[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:833)
Meine Frage ist: Ich brauche eine bessere Fehlermeldung, die zum Beispiel sagt (fehlende Nichtübereinstimmung der Ciphersuite oder ähnliches ist für das Ciphersuite-Problem relevant). Gibt es welche? Natürlich könnte ich meine eigene Nachricht schreiben, aber die Socket-Verbindung kann aus verschiedenen Gründen fehlschlagen und ich kann keinen allgemeinen Fehler machen, der immer „Ciphersuite-Nichtübereinstimmung“ lautet.

Dies ist das Client-Skript:

Code: Select all

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()

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post