Plötzlich, gestern, konnte einer meiner Apache-Server keine Verbindung zu meinem LDAP (AD) -Server herstellen. Auf diesem Server werden zwei Sites ausgeführt, die beide LDAP verwenden, um sich bei meinem AD-Server zu authentifizieren, wenn sich ein Benutzer bei einem der Sites anmeldet. Es hatte vor zwei Tagen gut funktioniert. Aus unbekannten Gründen funktionierte es seit gestern nicht mehr. Das Fehlerprotokoll sagt nur Folgendes:
auth_ldap authenticate: user foo authentication failed; URI /FrontPage [LDAP: ldap_simple_bind_s() failed][Can't contact LDAP server], referer: http://mysite.com/
Ich dachte, mein selbstsigniertes SSL-Zertifikat sei möglicherweise abgelaufen, also habe ich ein neues für mysite.com erstellt, aber nicht für den Server-Hostnamen selbst, und das Problem blieb bestehen. Ich habe die Protokollierung auf Debug-Ebene aktiviert. Es zeigt die vollständige SSL-Transaktion mit dem LDAP-Server an und scheint fehlerfrei bis zum Ende abgeschlossen zu sein, wenn die Meldung "LDAP-Server kann nicht kontaktiert werden" angezeigt wird. Ich kann ldapsearch über die Befehlszeile auf diesem Server ausführen und mich bei diesem Server anmelden, der auch LDAP verwendet, sodass ich weiß, dass der Server eine Verbindung zum LDAP / AD-Server herstellen und diesen abfragen kann. Es ist nur Apache, der keine Verbindung herstellen kann.
Das Googeln nach einer Antwort hat nichts ergeben, also frage ich hier. Kann jemand einen Einblick in dieses Problem geben?
Hier ist der LDAP-Abschnitt aus der Apache-Konfiguration:
<Directory "/web/wiki/">
Order allow,deny
Allow from all
AuthType Basic
AuthName "Login"
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
#AuthBasicAuthoritative off
AuthLDAPUrl ldaps://domain.server.ip/dc=full,dc=context,dc=server,dc=name?sAMAccountName?sub
AuthLDAPBindDN cn=ldapbinduser,cn=Users,dc=full,dc=context,dc=server,dc=name
AuthLDAPBindPassword password
require valid-user
</Directory>
quelle
Antworten:
Eine Paketverfolgung vom httpd-Server / LDAP-Client ergab eine Meldung, dass die Zertifizierungsstelle unbekannt ist.
TLSv1-Warnung (Stufe: Schwerwiegend, Beschreibung: Unbekannte Zertifizierungsstelle)
Ich habe die folgende Option gefunden und zu meiner httpd.conf hinzugefügt:
Das hat mein Problem unter CentOS 6 behoben. Die CentOS 5 httpd-Server erforderten keine Änderungen und hatten die ganze Zeit ohne diese Option funktioniert.
quelle
Ich hatte zuvor ein ähnliches Problem mit AD unter Windows 2003: Die Lösung, die ich gefunden habe, bestand darin, nicht mit dem vollständigen DN zu binden, sondern stattdessen die Syntax user @ domain zu verwenden:
quelle
Haben Sie von Ihrem LDAP-Server aus Zugriff auf die Protokolle? Sie können bei der Behebung dieses Problems hilfreich sein.
quelle
Ich habe dies gesehen, als ein Paketupdate Änderungen in der Client-ldap.conf (normalerweise /etc/ldap.conf oder /etc/openldap/ldap.conf) verursacht und die Option TLS_REQCERT auf eine strengere Einstellung zurücksetzt. Es kann das SSL ordnungsgemäß aushandeln, schlägt jedoch am Ende immer noch fehl, da es die Zertifikatkette von einem vertrauenswürdigen Stamm aus nicht validieren kann.
quelle
Möglicherweise möchten Sie die Uhr der Server überprüfen. Wenn der Zeitunterschied mehr als ein paar Minuten beträgt, ist das Authentifizierungsticket ungültig.
Obwohl dies nicht genau die Fehlermeldung ist, weist der Teil "Der andere Server erhält plötzlich das gleiche Problem" möglicherweise auf ein solches Problem hin.
quelle
Sie müssen das LDAP-CA-Zertifikat aktivieren, um mit LDAPS arbeiten zu können
quelle
Ich hatte ein ähnliches Problem. Ich könnte das Zertifikat mit openssl erhalten, ich könnte Active Directory über SSL mit ldapsearch an denselben Ports abfragen. Schließlich wechselte ich zu den Microsoft Global Catalog-Ports 3268 oder 3269 und beide funktionierten. Die Microsoft Windows 2003-Server wurden gepatcht, dies geschah jedoch Tage vor dem Auftreten der Probleme.
quelle
Ich habe LDAPS auf allen unseren Servern implementiert und bin auch auf dieses Problem gestoßen. Verschwindet es, wenn Sie zu Klartext-LDAP zurückkehren (nicht ideal, aber nützlich, um die Ursache des Problems zu kennen). Wenn ja, muss ich noch eine Lösung finden, aber vielleicht können wir gemeinsam einen Fehler in authnz_ldap isolieren.
quelle
Ich gehe davon aus, dass Ihre Befehlszeilenexperimente denselben "Benutzer binden" verwendeten wie in Ihren Apache-Konfigurationen. Wenn nicht, sollten Sie überprüfen, ob Sie das richtige aktuelle Passwort haben.
In der Vergangenheit musste ich einmal den globalen Katalogport anstelle des Standard-LDAP-Ports für die AD-Domäne verwenden. Ich kann mich nicht an den Grund erinnern. Für ldaps wie in Ihrer URL oben wäre dies Port 3269.
quelle
Dies funktioniert so, dass Ihre Website zuerst mit den Anmeldeinformationen Ihres Bindungsbenutzers eine Verbindung zu AD herstellen muss. Sobald diese Verbindung hergestellt ist, wird dieser Zugriff verwendet, um die Anmeldeinformationen des Benutzers zu überprüfen, der versucht, auf Ihre Website zuzugreifen.
Laut Ihrer Fehlermeldung scheint es, dass der Prozess keine Verbindung zu AD als Bindungsbenutzer (AuthLDAPBindDN) herstellen kann.
Stellen Sie sicher, dass das Bindebenutzerkonto in Active Directory nicht deaktiviert ist und dass das von Ihnen als (AuthLDAPBindPassword) angegebene Kennwort korrekt ist . Stellen Sie außerdem sicher, dass Ihr Bindungsbenutzer über die erforderlichen Berechtigungen zum Suchen anderer Benutzer verfügt (in unserem Fall muss er Mitglied der Domänenbenutzer sein).
quelle
Ich habe ein ähnliches Problem, das ich durch Ausführen dieses Befehls identifiziert habe:
openssl s_client -connect $ldap_host:636 -state -nbio 2>&1
. Ich denke, mod_ldap verwendet openssl darunter, daher sollte dies für das Debuggen ziemlich konsistent sein.Ich habe es mit einem anderen SSL-verschlüsselten Server verglichen, von dem ich wusste, dass er funktioniert. Bei einer ordnungsgemäß überprüften SSL-Verbindung wird eine Kette angezeigt, die zu einer Stammzertifizierungsstelle geht und 0 zurückgibt. Ein Fehler bei der SSL-Überprüfung gibt eine Nummer und einen Grund an. Sie können die Ausgabe verwenden, um festzustellen, was falsch läuft.
In meinem Fall werden die LDAP-Serverzertifikate von Verisign signiert, das Zwischenzertifizierungsstellenzertifikate verwendet . OpenSSL kann das Zertifikat nicht überprüfen und die Verbindung wird abgelehnt ("Verbindung vom Server abgelehnt" ist nicht hilfreich).
quelle
Ich hatte gerade dieses Problem ("ldap-Server kann nicht kontaktiert werden") auf RHEL6 und es war das Ergebnis von Änderungen an openldap. yum hatte die Konfigurationsdatei /etc/openldap/ldap.conf aktualisiert, aber anstatt sie zu überschreiben (falls sie angepasst wurde; in meinem Fall nicht), wurde eine ldap.conf.rpmnew-Datei erstellt.
Das Kopieren der .rpmnew-Version über ldap.conf hat das Problem behoben.
(Ich kann nicht zustimmen, dass das Deaktivieren der Zertifikatsüberprüfung eine Antwort darauf ist. Dadurch wird das Problem auf potenziell gefährliche Weise vermieden.)
quelle
Ich konnte dieses Problem beheben, indem ich die hier gefundenen Pakete
berkelydb
und installierte .openldap
Der Unterschied besteht darin, dass RedHat damit begonnen hat, Dinge zu verknüpfen,
nss
anstattopenssl
SSL-Unterstützung zu leisten. In diesem Fall bricht das alle Dinge. Die Installation dieser Pakete (die mit openssl verknüpft sind) behebt das Problem. Holen Sie sich einfach die Pakete und führen Sie aus:Starten Sie dann Apache neu, und Sie sollten im Geschäft sein.
quelle