Comment puis-je résoudre ldap_start_tls() “Impossible de démarrer TLS: erreur de connexion” en PHP?
J'obtiens:
Avertissement: ldap_start_tls()
[function.ldap-start-tls]: Impossible de
démarrer TLS: erreur de connexion dans
/var/www/X.php ligne Y
/etc/ldap/ldap.conf:
TLS_CACERT /etc/ssl/certs/ca.crt
ca.crt
est l'autorité de certification qui a signé le certificat du serveur LDAP. Le certificat sur le serveur LDAP est expiré et je ne peux pas le changer.
OriginalL'auteur user323094 | 2010-04-22
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ignorer la validité de windows par l'émission d'
dans votre code php. Sous *nix, vous devez modifier votre
/etc/ldap.conf
pour contenirUne autre chose à prendre en compte est qu'il nécessite la version 3 (la version 2 est en php par défaut):
Pour avoir une meilleure idée de ce qui se passe, vous pouvez activer la journalisation du débogage par:
Cela peut être fait avant la
ldap_connect
.Notez que, par la désactivation de la vérification du certificat d'ouvrir un trou de sécurité en permettant à l'homme dans le milieu de l'attaque. Vous êtes cryptage de la transmission sans vérification de la destination!
Je n'ai même pas le soin à ce point. Si il sera de retour moi quelque chose qui n'est pas une erreur, je serai éternellement reconnaissant. Sur un système windows exécutant PHP 5.3, la réponse ci-dessus ne fonctionne pas
C'est une terrible réponse. Il devrait résoudre le problème plutôt que de la désactivation de la case.
OriginalL'auteur
Ma solution/solution de contournement consiste à utiliser
Si vous avez une meilleure idée, merci de poster une autre réponse.
OriginalL'auteur
Le chemin pour
ldap.conf
dans Windows est fixe:Un redémarrage du serveur web peut être nécessaire pour appliquer les modifications.
OriginalL'auteur
Dans les systèmes de type debian:
Installer le paquet:
ldap-utils
et dans le fichier/etc/ldap/ldap.conf
, modifiez la ligne:Créer le répertoire
/etc/ldap/cacerts
et copier le cacert pour/etc/ldap/cacerts/cacert.asc
Redémarrer
apache
.Dans redhat systèmes à base de:
Installer le paquet:
openldap-clients
et dans le fichier/etc/openldap/ldap.conf
modifier la ligne:Créer le répertoire
/etc/openldap/cacerts
et copier le cacert pour/etc/openldap/cacerts/cacert.asc
Redémarrer
httpd
Il mentionne "modifier la ligne", mais pas ce qui est réellement en cours d'édition dans la ligne
Je voulais dire, assurez-vous que la ligne qui mentionne TLS_CACERT a cette valeur.
OriginalL'auteur
J'ai été en mesure de le faire fonctionner correctement avec openldap sur Amazon Linux (Elastic Beanstalk PHP 7.0) avec MacOS Serveur 5 LDAP, avec TLS ensemble de la demande.
dans /etc/openldap/ldap.conf:
TLS_REQCERT demande
TLS_CACERT /etc/openldap/certs/yourcacert.pem
(notez que si vous n'êtes pas à l'aide de openldap, le chemin sera /etc/ldap/certs/yourcacert.pem). Ce programme d'installation n'a pas fonctionné jusqu'à ce que j'ai placé le certificat à l'intérieur de la certs dossier; il n'a pas de travail à partir de tout autre chemin.
Le certificat pour être placé dans ce chemin n'est PAS le certificat TLS du serveur. C'est le CA (Autorité de certification) certificat de l'autorité qui a délivré le serveur/domaine spécifique d'un certificat TLS. Seul le certificat d'autorité de certification placé dans cette voie permettra TLS fonctionne avant de tenter une connexion au serveur LDAP de php. Obtenir le certificat d'autorité de certification de votre serveur ou le télécharger à partir de l'administration du site, ils sont librement disponibles.
Pour tester si la liaison LDAP est même travail sans TLS, ensemble TLS_REQCERT jamais temporairement (commentaire # out TLS_CACERT). Si vous obtenez le message "impossible de se connecter au LDAP" ce n'est pas un TLS erreur; il ne peut tout simplement pas se connecter au serveur et vous aurez probablement besoin d'ouvrir le port 389 (pas 636 pour TLS).
N'oubliez pas de redémarrer votre serveur Apache à chaque fois que vous modifiez le fichier de configuration ou d'un certificat.
OriginalL'auteur
De l'aide supplémentaire pour les autres, la solution de certificat ici résolu mon
ldapsearch
de ligne de commande de problème, mais encore PHP plaint**Can't contact LDAP server**
S'est avéré être SELinux sur RHEL7 ( CentOS7 ) blocs HTTPD de l'utilisation de LDAP les ports 389 et 636 par défaut, vous pouvez le débloquer avec:
Vérifier votre SELinux fichier journal d'audit pour que les choses sont bloquées.
OriginalL'auteur