CosmoCode ist eine Internetagentur aus Berlin mit Schwerpunkt CMS, Wiki, Web2.0
Great software. Bright people. Happy customers!
Mail info@cosmocode.deTel +49 (30) 814504070
Für einen Kunden sollte ich das DokuWiki Active Directory Backend so erweitern, dass angemeldete Nutzer Ihr Passwort selbst ändern können. Eigentlich kein Problem, doch zum Ausprobieren brauchte es erstmal einen Active Directory Server - den hat mir Karsten schon vor ein paar Tagen eins, zwei, fix auf einem Windows 2003 Server aufgesetzt.
Beim Implementieren kam dann aber schnell der erste Stolperstein: Passwort ändern geht nur über eine SSL gesicherte Verbindung. Nur, die wollte nicht klappen. Der Port 636 war zwar offen, ein connect wurde aber sofort abgelehnt. Ein Blick in die Ereignisanzeige brachte dann dann auch die folgende Meldung:
LDAP über SSL-Funktionen (Secure Sockets Layer) steht zurzeit nicht zur Verfügung, da der Server kein Zertifikat erhalten konnte.
Aha. Klar – ohne Zertifikat kein SSL. Nach ein wenig Suchen sties ich dann auf folgenden Knowledge Base Eintrag: How to enable LDAP over SSL with a third-party certification authority. Alles klar.
Bevor's losgeht braucht man aber eben jene third-party certificate authority. Will man kein Geld dafür ausgeben und es möglichst einfach haben, macht man's so wie ich und nimmt einfach CACert.org.
Damit der Active Directory Dienst das Zertifikat später auch akzeptiert, muss dafür das Root Zertifkat in den lokalen Zertifikatsspeicher importiert werden. Wie das geht, ist hier beschrieben.
23 Schritte später hat man gelernt wie man das Zertifikate Snap-In aufruft (merken! das brauchen wir später nochmal) und hat eine neue Vertrauenswürdige Zertifizierungsstelle hinzugefügt 1).
Als nächstes gilt es dem Knowledge Base Artikel zu folgen.
Das erstellen des Zertifikatsrequests erfolgt mittels einer .inf Datei in der der Full Qualified Domain Name (FQDN) des Domänencontrollers eingefügt werden muss. Hier aufpassen: das ist nicht etwa der Name des Servers selbst sondern die Windows-Domäne wird da noch voran gestellt. Am einfachsten lässt sich der Name über die Active Directory Verwaltung finden. Unter „Domain Controllers“ einfach einen Rechtsklick auf den aufgeführten Computer machen und in die Eigenschaften unter „DNS-Name“ schauen.
Den Inhalt der, über das certreq Tool, erstellten request.req Datei pasted2) man dann im Webinterface von CACert.org und erhält im Gegenzug ein Zertifikat welches man in eine request.cer pasted.
Jetzt wieder das Zertifikats Snap-In öffnen (siehe oben) und das Zertifikat via Zertifikate → Eigene Zertifikate → Rechtsklick → Alle Aufgaben → Importieren… in den Eigene Zertifikate Speicher importieren.
Das war's. Nach dem Windows-typischen Neustart sollte das Active Directory jetzt auch SSL Anfragen beantworten.
Dachte ich. Nur dass mein PHP Client immernoch nicht connecten konnte. Problem: PHP greift auf die Open-LDAP libraries zurück und die versuchen das Zertifikat des Servers zu verifizieren. Damit das funktioniert muss Open-LDAP entweder die Root-CA bekannt sein (In diesem Fall CACert) oder man muss die Verifizierung abstellen.
Da ich inzwischen genug Zeit mit konfigurieren verbracht hatte, entschied ich mich für letzteres. Die folgende Zeile in meiner /etc/openldap/ldap.conf und anschließendem Apache-Neustart löste auch dieses letzte Problem:
TLS_REQCERT never
Über CosmoCode
Abonnieren
Neuste Blogs
Willi
2011/01/28 16:58
Piece of cake ;)