2010-04-22 1 views

Antwort

18

Sie können die Gültigkeit in Fenster ignorieren, indem

Ausgabe
putenv('LDAPTLS_REQCERT=never'); 

in Ihrem PHP-Code. In * nix müssen Sie Ihre /etc/ldap.conf bearbeiten enthalten

TLS_REQCERT never 

Eine andere Sache zu beachten ist, dass es Version 3 (Version 2 ist PHP-Standard) erfordert:

$con = ldap_connect($hostnameSSL); 
ldap_set_option($con, LDAP_OPT_PROTOCOL_VERSION, 3); 

Um eine bessere Vorstellung

ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7); 

Dies kann getan werden, bevor die ldap_connect erfolgt: von dem, was vor sich geht, können Sie die Debug-Protokollierung von aktivieren.

+0

Doing nur das hat nicht für mich funktioniert. Was ich tun musste (folge dem Thread unter: http://www.mediawiki.org/wiki/Thread:Extension_talk:LDAP_Authentication/Unable_to_start_TLS_-_Warning_on_line_577), war es, $ wglDAPEncryptionType = array ('YOUR_DOMAIN' => 'clear'); in der LocalSettings.php. Das hat es aufgemacht und sofort funktioniert. –

+3

Bitte nicht, dass Sie durch die Deaktivierung der Zertifikatsüberprüfung eine Sicherheitslücke öffnen, indem Sie dem Benutzer den mittleren Angriff erlauben. Sie verschlüsseln die Übertragung, ohne das Ziel zu überprüfen! – svandragt

+0

@svandragt Ich interessiere mich nicht einmal an dieser Stelle. Wenn es mir etwas zurückgibt, das kein Fehler ist, werde ich ewig dankbar sein. Auf einem Windows-System mit PHP 5.3, die obige Antwort funktioniert nicht –

2

Meine Lösung/Abhilfe ist

/etc/ldap/ldap.conf: 
#TLS_CACERT /etc/ssl/certs/ca.crt 
TLS_REQCERT never 

verwenden Wenn Sie eine bessere Idee haben, schreiben Sie bitte eine andere Antwort.

1

Der Pfad für ldap.conf in Windows festgelegt ist:

c: \ openldap \ sysconf \ ldap.conf

Ein Neustart des Web-Servers erforderlich Änderungen zu übernehmen werden.

+0

Haben Sie nicht dieses Verzeichnis auf meinem System –

1
  1. In Debian-basierten Systemen:

    Installieren Sie das Paket: ldap-utils und in der Datei /etc/ldap/ldap.conf, bearbeiten Sie die Zeile:

    TLS_CACERT /etc/ldap/cacerts/cacert.asc 
    

    Erstellen Sie das Verzeichnis /etc/ldap/cacerts und kopieren Sie die cacert zu /etc/ldap/cacerts/cacert.asc

    Neustart apache.

  2. In RedHat-basierten Systemen:

    Installieren Sie das Paket: openldap-clients und in der Datei /etc/openldap/ldap.conf bearbeiten die Zeile:

    TLS_CACERT /etc/openldap/cacerts/cacert.asc 
    

    Erstellen Sie das Verzeichnis /etc/openldap/cacerts und kopieren Sie die cacert zu /etc/openldap/cacerts/cacert.asc

    Neustart httpd

+0

Das sieht wie die richtige Antwort aus (Kopieren des bestimmten Zertifikats, dem ich vertrauen möchte, anstatt die Zertifikatsprüfung zu ignorieren). Leider kann ich es nicht mehr überprüfen, da wir diese spezielle Einstellung veraltet haben. – user323094

+0

Es erwähnt "bearbeiten Sie die Zeile", aber nicht, was tatsächlich in der Zeile bearbeitet wird – user49438

+0

Ich meinte, stellen Sie sicher, dass die Zeile, die TLS_CACERT erwähnt, diesen Wert hat. –

0

Einige zusätzliche Hilfe für andere, löste das Zertifikat Lösung hier meine ldapsearch Linie Ausgabebefehl, aber immer noch PHP beschwerte **Can't contact LDAP server**

Es stellte sich heraus SELinux auf RHEL7 (CentOS7) blockiert sein HTTPD von LDAP-Ports 389 mit und 636 Standardmäßig können Sie die Blockierung mit:

setsebool -P httpd_can_network_connect 1 

Überprüfen Sie Ihre SELinux-Prüfprotokolldatei auf Dinge, die blockiert werden.

0

Ich konnte dies mit openldap auf Amazon Linux (Elastic Beanstalk PHP 7.0) mit MacOS Server 5 LDAP richtig funktionieren, mit TLS eingestellt zu verlangen.

in /etc/openldap/ldap.conf:

TLS_REQCERT Nachfrage

TLS_CACERT /etc/openldap/certs/yourcacert.pem

(beachten Sie, dass, wenn Sie nicht verwenden, OpenLDAP, die Pfad ist /etc/ldap/certs/yourcacert.pem). Dieses Setup hat nicht funktioniert, bis ich das Zertifikat in den Ordner certs gestellt habe. es funktionierte nicht von irgendeinem anderen Weg.

Das Zertifikat, das in diesen Pfad eingefügt werden soll, ist NICHT das TLS-Zertifikat des Servers. Es ist das CA (Certificate Authority) -Zertifikat der Behörde, die das server/domainspezifische TLS-Zertifikat ausgestellt hat. Nur das CA-Zertifikat in diesem Pfad ermöglicht TLS zu arbeiten, bevor eine LDAP-Bindung in PHP versucht wird. Holen Sie das CA-Zertifikat von Ihrem Server oder laden Sie es von der Website der Behörde, sie sind frei verfügbar.

Um zu testen, ob die LDAP-Bindung auch ohne TLS funktioniert, setzen Sie TLS_REQCERT niemals vorübergehend (möglicherweise müssen Sie TLS_CACERT auskommentieren). Wenn Sie "Verbindung zu LDAP nicht herstellen" erhalten, handelt es sich nicht um einen TLS-Fehler. Es kann einfach keine Verbindung zum Server herstellen und Sie müssen wahrscheinlich Port 389 (nicht 636 für TLS) öffnen.

Denken Sie daran, Ihren Apache-Server jedes Mal neu zu starten, wenn Sie die Konfigurationsdatei oder das Zertifikat ändern.