OpenSSL 1.1.1

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Trollstone
User
Beiträge: 1
Registriert: Dienstag 1. Februar 2022, 08:35

Hallo zusammen,

ich versuche mich gerade an ein paar keinen Herausforderungen im Bezug auf den Zugriff auf einen LDAP Server. Mein Code konnte ich dabei ohne Probleme auf meinem Mac unter Python 3.8.9 ausführen - nach dem Update von Python auf 3.10.2 konnte die Verbindung zum LDAP Server aber aufgrund eines SSL Handshake Fehlers nicht mehr aufgebaut werden.

Erkenntnisse brachte hier erst die Debug Informationen vom LDAP Server. Hier wurde deutlich, dass das Problem beim "Aushandeln" des zu verwendenden Ciphers lag (No common ciphers found)

Die Lösung bestand am Ende darin, über das Tls Objekt den gewünschten Cipher als Parameter zu übergeben. Dies war vor SSL 1.1.1 nicht notwendig!

Code: Alles auswählen

ciphers='ALL'
#ciphers='AES256-GCM-SHA384'

# Establish LDAP connection and initialize connection (conn) object
tls = Tls(ciphers=ciphers,validate=ssl.CERT_NONE,version=ssl.PROTOCOL_TLS)
Kann mir eventuell jemand sagen, ob es für die von Python 3.10.x verwendete OpenSSL Library eine systemweite Konfiguration gibt, damit im Code nicht unbedingt der gewünschte Cipher angegeben werden muss?

Besteht unter MacOS, welches ja eine andere OpenSSL Implementierung benutzt eine Möglichkeit (temporär) im Terminal auf die OpenSSL 1.1.1 zuzugreifen, die von Python installiert wird.

Sollten meine Fragen zu profan sein, bitte ich das zu entschuldigen - ich fange gerade erst an in Python einzutauchen ;-)

VG

Thorsten
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Davon ausgehend dass du vorher den default context verwendet hast, deutet dass darauf hin dass eine Seite nur noch veraltete und unsichere Optionen unterstützt, welche die andere ablehnt. Deine Lösung quasi alles zu akzeptieren was dir der Server anbietet - was unsicher ist - unterstützt dies ebenfalls. Um dies zu überprüfen müsste man man sich die Konfiguration von Client und Server genau anschauen und vergleichen.

Da du eine aktuelle Python und OpenSSL Version nutzt, dürfte es wohl am LDAP Server liegen. Ich würde mir den mal genauer anschauen und ggfs. aktualisieren. Sollte dass nicht möglich sein, könnte man sich mit der Konfiguration des LDAP Servers befassen und den Client so zu konfigurieren dass die am wenigsten unsicheren aber funktionieren Optionen verwendet werden.

Es gibt meines Wissens keine Möglichkeit dies systemweit zu ändern, dies wäre aber auch wahrscheinlich die schlechteste Lösung des Problems.
Antworten