2010-08-16 8 views
7

Der Code Ich verwende:LDAP-Verbindung Problem mit selbst signierten Zertifikat

# Create LDAPObject instance 
conn = ldap.initialize(url) 
conn.protocol_version=ldap.VERSION3 

conn.simple_bind_s(binddn,bindpw) 
# This raises: 
# ldap.SERVER_DOWN: 
    {'info': 'error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed', 'desc': "Can't contact LDAP server"} 

Wenn ich ldap verwenden: // statt ldaps: //, funktioniert es richtig.

Kann mir jemand helfen herauszufinden, warum das so ist?

Danke. :)

Antwort

4

Ich habe noch nie Python-LDAP über SSL verwendet, aber ich glaube, Sie müssen ldap sagen, welche Prüfungen auf dem Server-Zertifikat durchgeführt werden. Wenn dies auf Nachfrage eingestellt ist (was der Standardwert sein kann), müssen Sie ihm gültige Zertifikate geben.

Siehe die initialize.py im Demo-Verzeichnis die Quelle.

+0

initialize.py perfekt zu ignorieren war. Vielen Dank! :) –

17

Ich kam hier auf der Suche nach einer Lösung für mein Problem im Zusammenhang damit. Dieses Q & A löste mein genaues Problem nicht, aber andere, die nach meiner genauen Problemlösung suchen, finden folgendes nützlich:

Für diejenigen, die SSL/TLS für grundlegende Transportverschlüsselung und nicht Identitätsprüfung (selbstsignierte Zertifikate) verwenden, Sie drehen nur strenge Überprüfung des Server-Zertifikats aus:

tls_checkpeer no 
+0

Dies macht keine strenge Überprüfung aus. Anstelle von 'ldap.OPT_X_TLS_ALLOW' sollte es' ldap.OPT_X_TLS_NEVER' heißen. – Olli

+0

Es schaltet * streng * ab, nur nicht im äußersten Sinne dieser Formulierung. OPT_X_TLS_NEVER versucht nicht einmal, das Zertifikat zu überprüfen. OPT_X_TLS_ALLOW versucht, das Zertifikat zu überprüfen, der Fehler bei der Überprüfung des Zertifikats wird jedoch ignoriert. Wir müssen wahrscheinlich zustimmen, nicht zustimmen;) – jblaine

6

Zertifikat Fehler

ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER) 
Verwandte Themen