LDAP et certificats SSL

PHP Ajouter un commentaire

Voici un retour rapide sur un problème rencontré récemment, avec la connexion sécurisée à un annuaire LDAP avec PHP.

L’appel à ldap_connect s’effectue correctement mais l’authentification avec ldap_bind renvoie une erreur comme quoi la connexion n’est pas effectuée avec le serveur :

$ds = ldap_connect('ldaps://ldap.example.com'); 
 
if (!$ds) {
 	die("Echec de la connexion à l'annuaire LDAP.")
} 
 
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
$dn = "uid=mylogin, ou=myorgunit, o=mycompany, c=com";
$r = ldap_bind($ds, $dn, $valeur);

Un paramètre important à retenir est la validité du certificat SSL fourni par le serveur, qui lorsqu’il n’est pas valide, renvoie une erreur 81 (que vous pouvez détecter avec la fonction ldap_errno).

L’origine du problème est obscure et on doit la solution à un contributeur du site php.net. L’extension PHP fournie avec Windows possède en effet une directive qui va chercher un fichier de configuration d’OpenLDAP codé en dur dans l’extension (c:openldapsysconfldap.conf).

L’astuce pour ne pas obtenir d’erreur en cas de certificat invalide est de recréer ce fichier ldap.conf avec le chemin indiqué ci-dessus, et d’y ajouter la ligne :

TLS_REQCERT never

… et vous pourrez enfin vous authentifier sur le LDAP avec un certificat SSL non signé !

Une Réponse to “LDAP et certificats SSL”

  1. un collègue anonyme Says:

    Niquel, mais tu veus pas changer ta police de caractères pour le code? Geshi le rend bien compréhensible mais la police est quasi illisible :)

Leave a Reply

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in