Error in Keycloak LDAP Query - TLS Problem to LDAP

Hallo zusammen,

ich habe eine kleine Odysse hinter mir.
Ich habe eine Univention Instanz und mehrere extern gehostete Services (aka nicht in Univention) hier zuhause. IPAM und Nextcloud laufen jetzt schon erfolgreich mit SAML an dem Univention Server und jetzt sollte noch eine Wiki.js Instanz dazu.

Leider habe ich auch nach einer Woche es nicht hinbekommen, SAML in Wiki.js mit dem Univention Server zum Laufen zu bringen. Daher habe ich die Alternative Keycloak versuchen wollen, da wiki.js dafür eine extra Auth-Integration hat (sollte dann recht einfach sein). Leider scheint der Keycloak ein Problem bei der Kommunikation mit dem LDAP Server zu haben, ich bekomme diesen Fehler im Log:

2023-05-20 15:31:21,656 ERROR [org.keycloak.storage.ldap.idm.store.ldap.LDAPContextManager] (executor-thread-25) Could not negotiate TLS: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Ich hatte bisher LetsEncrypt über meine zentrale Traefik Instanz abgehandelt, dachte aber aufgrund dem Fehler, dass der Keycloak Container mit dem Self-Signed Cert von der Univention CA nichts anfangen kann. Also habe ich meinen Traefik umgestellt und LetsEncrypt direkt in UCS zum Laufen gebracht. Dann habe ich gemerkt, dass es gar keinen Schalter zur Nutzung des LE-Certs im LDAP gibt und ich das Problem damit gar nicht so einfach gelöst bekomme.

Daher: Kennt jemand den Fehler, den KeyCloak hier wirft?

Hi,

habe das Problem glaube ich gefunden. Keycloak wurde ja automatisch aus dem App Center installiert.
Dabei wurde in Keycloak ein Realm “ucs” mit der User Federation ldap-provider angelegt. Diese User Federation hat als Connection URL den Wert “ldap://ns1.univention-fqdn:7389” sowie “Enable STARTTLS: true” hinterlegt.

Hm. OK, er versucht also auf dem Non-SSL Port des slapd einen StartTLS. Scheinbar hängt er sich aber an dem verwendeten Zertifikat auf.

Also hab ich den Parameter “Enable STARTTLS” auf “false” gestellt. Und schon funktioniert die ldap Verbindung.
Aber: Das wäre ungeil, keine SSL gesicherte Verbindung zu benutzen.

Warum fehlt dem Keycloak hier also das Zertifikat des LDAP Servers? Könnt ihr dem Keycloak Container beibringen, dass er das Zertifikat auch als gültig ansieht? Oder könnte man dem LDAP Server vielleicht auch ein LetsEncrypt Zertifikat unterschieben?

Grüße
Christian Hase

1 Like

Hallo @hasechris92

Habe das selbe Problem.
UCS: 5.0.5:829
Keycloak: 22.0.3-ucs1

Nach dem Update bekam ich den Fehler

2023-10-10 18:53:39,037 WARN  [org.keycloak.services] (executor-thread-6) KC-SERVICES0013: Failed authentication: org.keycloak.models.ModelException: LDAP Query failed
...
Caused by: org.keycloak.models.ModelException: Querying of LDAP failed org.keycloak.storage.ldap.idm.query.internal.LDAPQuery@28cc5c47
....
2023-10-10 18:53:39,039 WARN  [org.keycloak.events] (executor-thread-6) type=LOGIN_ERROR, realmId=4459c606-01f0-45af-8a1a-06a0c3082d60, clientId=security-admin-console, userId=null, ipAddress=10.1..1.1, error=invalid_user_credentials, auth_method=openid-connect, auth_type=code, redirect_uri=https://example.domain.tld/admin/master/console/, code_id=8be7c703-7363-425d-9de8-e20dd3b43444, username=USER

Mit dem Befehl docker inspect keycloak kam ich an das lokale admin Passwort.
Danach konnte ich im GUI STARTTLS deaktivieren und der LDAP Query funktioniert wieder.

Wie hast du das Problem schlussendlich gelöst?

Beste Grüsse
AlteSocke

Hey,

sorry dass ich mich jetzt erst melde. Hab das Problem leider bis heute nicht gefixt bekommen - ich warte “einfach” auf die Veröffentlichung von UCS 5.2 - da muss Keycloak dann ja richtig funktionieren :smiley: sollte ja bald ™ kommen.

Ich hatte das gleiche Problem nach Erneuern der Zertifikate gemäß Renewing the SSL certificates.

univention-app shell keycloak -- keytool -cacerts -list | grep ucs listete beim Datum auch noch das letzte Keycloak Updatedatum (Befehl hier gefunden).

univention-app configure keycloak hat das Problem gelöst. Das schreibt auch in die Log updating certificates for keycloak=25.0.1-ucs2. Kann das bitte jemand auf Renewing the SSL certificates ergänzen?

Mastodon