2010-08-16 29 views
7

kodu używam:LDAP problem z połączeniem z podpisem własnym cert

# 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"} 

Kiedy używać LDAP: // zamiast LDAPS: //, to działa poprawnie.

Czy ktoś może mi pomóc dowiedzieć się, dlaczego tak jest?

Dzięki. :)

Odpowiedz

4

Nigdy nie użyłem Pythona-Ldap przez SSL, ale uważam, że musisz powiedzieć ldapowi, jakie kontrole wykonać na certyfikacie serwera. Jeśli jest ustawione na żądanie (co może być domyślne), musisz podać ważne certyfikaty.

Zobacz katalog initialize.py w katalogu demonstracyjnym.

+0

initialize.py była doskonała. Dzięki! :) –

17

Przyszedłem tutaj, szukając rozwiązania mojego problemu związanego z tym. Ten numer Q & A nie rozwiązał mojego problemu, ale inni szukający rozwiązania mojego problemu znajdą następujące przydatne informacje:

Dla osób używających protokołu SSL/TLS do podstawowego szyfrowania transportu, a nie do weryfikacji tożsamości (certyfikaty z podpisem własnym), po prostu wyłączyć ścisłe sprawdzanie certyfikatu serwera:

ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_ALLOW) 

to jest grubsza analogiczne do ustawiania OpenLDAP ustawienie 2.1+ klient:

tls_checkpeer no 
+0

Nie wyłącza to ścisłego sprawdzania. Zamiast 'ldap.OPT_X_TLS_ALLOW' powinien przeczytać' ldap.OPT_X_TLS_NEVER'. – Olli

+0

Wyłącza * ścisłe * sprawdzanie, po prostu nie w sensie dosłownym tego sformułowania. OPT_X_TLS_NEVER nawet nie próbuje zweryfikować certyfikatu. OPT_X_TLS_ALLOW próbuje zweryfikować certyfikat, ale niepowodzenie weryfikacji certyfikatu jest ignorowane. Prawdopodobnie będziemy musieli się zgodzić, aby się nie zgodzić;) – jblaine

6

ignorować błędy certyfikatów

ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER) 
Powiązane problemy