Проблема соединения LDAP с самоподписанным сертификатом - PullRequest
9 голосов
/ 16 августа 2010

код, который я использую:

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

Когда я использую ldap: // вместо ldaps: //, он работает правильно.

Может кто-нибудь помочь мне понять, почему это так?

Спасибо. :)

Ответы [ 4 ]

20 голосов
/ 10 января 2012

Я пришел сюда в поисках решения моей проблемы, связанной с этим.Эти вопросы и ответы не решили мою точную проблему, но другие, ищущие точное решение моей проблемы, найдут следующее полезное:

Для тех, кто использует SSL / TLS для базового транспортного шифрования, а не проверки личности (самозаверяющие сертификаты),Вы просто отключаете строгую проверку сертификата сервера:

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

Это примерно аналогично настройке клиента OpenLDAP 2.1+:

tls_checkpeer no
8 голосов
/ 07 февраля 2014

игнорировать ошибки сертификата

ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
5 голосов
/ 16 августа 2010

Я никогда не использовал python-ldap поверх SSL, но я полагаю, что вы должны указать ldap, какие проверки следует выполнять для сертификата сервера.Если для этого задано требование (которое может быть значением по умолчанию), вы должны предоставить ему действительные сертификаты.

См. initialize.py в демонстрационном каталоге источника.

2 голосов
/ 17 января 2014

Попробуйте передать следующую переменную среды:

LDAPTLS_REQCERT=never

, чтобы игнорировать сертификат сервера, который может быть просрочен или недействителен.

См .:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...