Necesitamos conectar nuestro script php a LDAP sobre tls usando un certificado. La conexión LDAP funciona bien sin tls. Más detalles aquí https://stackoverflow.com/questions/15260252/how-to-use-multiple-tls-certificates-for-ldap-from-php-zend
Logramos conectarnos a través de tls desde Windows usando Softerra LDAP Browser. Nos pidió instalar un certificado y si confiamos en él.
Mi resultado final es poder autenticarme con LDAP usando TLS desde php. Me han dado un certificado de tipo .cer. Viene de una máquina de Windows Exchange. Por lo que puedo ver, SLES admite certificados .pem. Así que mi pregunta es...
P1:¿Necesito convertir de .cer a .pem primero antes de que pueda instalar el certificado en el cliente (que es el servidor SLES) y finalmente P2:¿cuál es la mejor manera de instalar este certificado en el servidor para que mi aplicación php pueda acceder a él y hacer su trabajo . Tenga en cuenta que en el servidor SLES necesitamos conectarnos a diferentes servidores LDAP.
Actualmente si corremos
ldapsearch -H ldaps://localhost:9215 -W
obtenemos
Enter LDAP Password:
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
additional info: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed (unable to get local issuer certificate)
Encontré mucha información buena aquí http://www.php.net/manual/de/function.ldap-connect.php#36156 y especialmente esta oración es importante en mis ojos Once you've gotten the ldapsearch tool working correctly PHP should work also.
- SUSE Linux Enterprise Server 11 (x86_64)
- ldapsearch:@(#) $OpenLDAP:ldapsearch 2.4.26 (26 de septiembre de 2012 13:14:42) $
[email protected]:/usr/src/packages/BUILD/openldap-2.4.26 /clientes/herramientas
(biblioteca LDAP:OpenLDAP 20426)
Respuesta aceptada:
Eso significa que el certificado en el servidor ha caducado o no es válido.
En cuanto a la solución alternativa, use el LDAPTLS_REQCERT
variable para ignorar el certificado, por ejemplo:
LDAPTLS_REQCERT=never ldapsearch -D "cn=drupal-test,ou=Services,dc=example,dc=com" -w my_pass -h ldap.example.com -b "ou=People,dc=example,dc=com" -s sub -x -ZZ "(uid=admin)"
De lo contrario, puede importar el certificado y marcarlo como de confianza.