Comment faire fonctionner ldapsearch sur SLES sur tls en utilisant un certificat?


12

Nous devons connecter notre script php à LDAP via tls à l'aide d'un certificat. La connexion LDAP fonctionne bien sans tls. Plus de détails ici /programming/15260252/how-to-use-multiple-tls-certificates-for-ldap-from-php-zend

Nous avons réussi à nous connecter via tls à partir de Windows à l'aide du navigateur Softerra LDAP. Il nous a demandé d'installer un certificat et de lui faire confiance.

Mon résultat final est de pouvoir m'authentifier avec LDAP en utilisant TLS de php. J'ai reçu un certificat de type .cer. Il provient d'une machine Windows Exchange. D'après ce que je peux voir, SLES prend en charge les certificats .pem. Donc ma question est ...

Q1: Dois-je d'abord convertir de .cer en .pem avant de pouvoir installer le certificat sur le client (qui est le serveur SLES) et enfin Q2: quelle est la meilleure façon d'installer ce certificat sur le serveur pour que mon application php puisse y accéder et faire son travail . Notez que sur le serveur SLES, nous devons nous connecter à différents serveurs LDAP.

À l'heure actuelle, si nous courons

ldapsearch -H ldaps://localhost:9215 -W

on a

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)

J'ai trouvé plein de bonnes infos ici http://www.php.net/manual/de/function.ldap-connect.php#36156 et surtout cette phrase est importante à mes yeuxOnce 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 septembre 2012 13:14:42) $ abuild @ baur: /usr/src/packages/BUILD/openldap-2.4.26/clients/tools (bibliothèque LDAP: OpenLDAP 20426)

Une autre façon de déboguer est d'ignorer la partie LDAP et de simplement regarder le SSL: vous pouvez exécuter "openssl s_client -connect localhost: 9215" pour cracher le certificat que le serveur utilise et les résultats de la validation.
Kowh

D'ACCORD. Je vais le transmettre au développeur. Personnellement, je ne comprends toujours pas comment j'installe le certificat et il est lié à un serveur lorsque je veux y accéder.
Radek

Réponses:


25

Cela signifie que le certificat sur le serveur a expiré ou qu'il n'est pas valide.

Quant à la solution de contournement, utilisez la LDAPTLS_REQCERTvariable pour ignorer le certificat, par exemple:

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)"

Sinon, vous pouvez importer le certificat et le marquer comme approuvé.


Fonctionne également sur cygwin où il n'y avait aucun ldap.conffichier existant pour définir le TLS_REQCERTparamètre.
bvj

8

Je ne suis pas sûr de la conversion de pem en cer, mais pour que ldapsearch utilise des certificats sans avoir un ldap.conf ou sans les autorisations pour modifier les certificats globaux, vous devriez pouvoir faire ceci:

env LDAPTLS_CACERT=/path/to/cert ldapsearch

1

En utilisant

LDAPTLS_REQCERT=never

supprime la validation de certificat du serveur LDAP. Cela annule la sécurité fournie par TLS en premier lieu. Ne fais pas ça. Vous devez corriger les certificats en cas de problème, puis fournir au client LDAP l'autorité de certification décrite par tink.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.