LDAP Verbindung per SSL "unable to get local issuer certificate"

Hallo,
ich bekomme die SSL Verschlüsselung der LDAP Verbindung an die AD nicht ans Laufen.
Fehlermeldung im web.log:
“ldaps://dexxx-s1003.corp.xxxx.com:636: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed (unable to get local issuer certificate)”

Per ldapsearch funktioniert es. Keys sind unter /etc/openldap/certs installiert.
CheckMK 1.6.0p8 auf Centos 7.6

Grüße
Sam

Hallo @SamVimes,
hast du schon die Punkte hier nachverfolgt? https://checkmk.com/cms_ldap.html#ssl

Also, alle Dateien richtig abgelegt + symlink + cert cache update + apache restart?
Ansonsten mal prüfen, ob du die Zertifikate komplett bis zum root-CA beweisen kannst.

Blöde Frage: Was für ein Symlink?
In der Doku finde ich nix dazu?

Sry, hab mich verhadelt… meinte hier den “mv”-Befehl den die in der Doku erwähnen für “Debian/Ubuntu”, aber das ist ja auch falsch für CentOS7. :sweat_smile:

Hallo,
ich bin auf ein ähnliches Problem gestoßen, als ich unsere AD Anbindung auf SSL umstellen wollte. Alle Keys inkl. Root-CA korrekt hinterlegt und keine Verbindung zum AD. M.E. liegt es nicht an der Zertifikatskette, sondern an den von den AD-Controllern verwendeten Zertifikaten bzw. dem Handling dieser Zertifikate in checkmk.
Seit Windows 2003 folgen die Zertifikate im AD der RFC 3280. D.h. die Zertifikate haben ein leeres Subject und verwenden stattdessen das SAN Feld. Das Python-Modul vom checkmk, welches die LDAP Anbindung macht, wertet aber nur das Subject zur Validierung des Zertifikats aus. Ist dieses leer, schlägt diese Validierung fehl.
Aus diesem Dilemma gibt es m.E. mehrere Auswege:

  1. Auf den AD Controllern bzw. in der CA das Template anpassen, so dass das Subject mit dem FQDN gesetzt wird.
  2. Das Python-Modul dazu bringen Zertifikate nach RFC 3280 korrekt zu validieren.
  3. Das Python-Modul dahingehend modifizieren, dass es keine Validierung vornimmt.

Letzteres ist mit einer Codezeile realisiert und vorerst meine Lösung. Sollte es einen besseren Weg geben, bin ich für Hinweise dankbar.

Das Problem kann ich so nicht bestätigen. Bei mir haben bisher alle Anbindungen per LDAPS ohne Probleme funktioniert.
Ich hab da auch nix an den Templates geändert oder ähnliches.

Das ist spannend. Und die Zertifikate der AD Controller folgen alle dem RFC 3280 und haben ein leeres Subject?

Hallo nobleo und willkommen in der Community.
Erster Vorschlag wäre, verschiebe dein Anliegen bitte in einen eigenen Thread :slight_smile:
Das wäre besser zur Übersicht. Du kannst dort natürlich gerne auf diesen Thread vermerken/verlinken.

Zweitens: Welche Check_MK Version nutzt du? Es ist immer sinnvoll diese mit anzugeben, da es basierend auf den Versionen unterschiedliche Lösungen/Fehler geben kann.

Drittens: Hattest du den irgendeine Art von Fehlermeldung erhalten als du versucht hast, die Verbindung herzustellen? Mir ist jetzt aktuell auch kein Problem bekannt mit den Zertifikaten und LDAPs. Das häufigste Problem was mir bekannt ist, ist dann viele gerne die Reihenfolge der Zertifikate falsch in Check_MK einpflegen, da Check_MK darauf sehr sensible reagiert ^^

Grüße Kruzgoth

True, true, true…Ich komme noch mal rein :wink:

Hallo nobleo,

kannst du mich mal für deine Option 3 in die richtige Richtung schubsen? Pyhton ist nicht meine
Muttersprache…

Hi,
auch wenn mein Problem dann doch anders zu lösen war (siehe https://forum.checkmk.com/t/ldap-via-ssl-tls-unable-to-get-cn-from-peer-certificate/18212)…

Ich habe in der Datei /omd/versions/default/lib/python/cmk/gui/plugins/userdb/ldap_connector.py in der Ecke von Zeile 245 (Funktion connect_server) eine zusätzliche Zeile

ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)

eingefügt. Diese veranlasst Python-LDAP die Zertifikatsprüfung zu unterlassen. Keine Empfehlung, hat aber funkioniert.