2010-08-16 31 views
7

El código que estoy utilizando:LDAP problema de conexión con el certificado autofirmado

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

Cuando uso LDAP: // en lugar de ldaps: //, funciona correctamente.

¿Alguien me puede ayudar a descubrir por qué es esto?

Gracias. :)

Respuesta

4

Nunca he usado python-ldap sobre SSL, pero creo que tiene que decirle a ldap qué verificaciones realizar en el certificado del servidor. Si se establece en demanda (que podría ser el valor predeterminado), debe otorgarle certs válidos.

Consulte el initialize.py en el directorio de demostración de la fuente.

+0

initialize.py era perfecto. ¡Gracias! :) –

17

Vine aquí buscando una solución a mi problema relacionado con esto. Este Q & A no resolvió mi problema exacto, pero otros buscando la solución de mi problema exacto encontrarán lo siguiente útil:

Para aquellos que usan SSL/TLS para cifrado de transporte básico y no verificación de identidad (certificados autofirmados), que acaba de desactivar la comprobación estricta del certificado del servidor:

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

Esto es más o menos análoga a establecer la configuración de OpenLDAP 2.1 + cliente:

tls_checkpeer no 
+0

Esto no desactiva la comprobación estricta. En lugar de 'ldap.OPT_X_TLS_ALLOW' debería leer' ldap.OPT_X_TLS_NEVER'. – Olli

+0

Desactiva la comprobación * strict *, pero no en el sentido extremo de esa fraseología. OPT_X_TLS_NEVER ni siquiera intenta verificar el certificado. OPT_X_TLS_ALLOW intenta verificar el certificado pero no se tiene en cuenta el error al verificar el certificado. Probablemente tendremos que estar de acuerdo en estar en desacuerdo;) – jblaine

6

para ignorar los errores de certificado

ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER) 
Cuestiones relacionadas