Ich verbringe nämlich schon seit drei Tagen meine Zeit mit diesem Problem, welches sich trotz wilder Internetrecherche bisher nicht aus der Welt schaffen lies.
Mein Szenario und was ich bisher gemacht habe:
Im LAN steht ein Windows Server 2008 R2 Domänencontroller mit Benutzerdaten im AD.
Jene Benutzerdaten sollen von einem PHP-Skript abgefragt werden um eine Anmeldung zu authentifizieren.
Das Skript läuft auf einem Apache, der wiederum auf einem 2. Rechner(Windows 2008 Server R2) installiert ist.
Damit Verschlüsselt über LDAPS kommuniziert werden kann muss eine CA her. Diese läuft in Form von OpenSSL auf einem 3. Rechner(auch Windows).
Auf dem DC wurden Serverzertifikat(ldap_server.p12) sowie CA-Zertifikat (ca_cert.p12) erfolgreich importiert.
Zu den Zertifikaten ist zu sagen, dass sie von der CA auf dem 3. Rechner stammen. Und ich kann auch sagen, dass diese richtig erstellt, verifiziert und signiert worden sind, da ich lokal auf dem DC mit ldp.exe über port "636" und Häkchen bei "SSL" ein Verbindung hergestellt bekomme.
Das PHP-Skript enthält die Strandard LDAP-Befehle wie ldap_connect(), ldap_bind(), ldap_search() etc...nichts besonderes
Über "ldap_connect(ldap://ldapdc.testdomain.de)" läuft das Skript auch einwandfrei...sobald ich "ldaps://ldapdc.testdomain.de" eintrage gehts nich mehr.
ACHTUNG, AB HIER WEIß ICH NICHT MEHR OB ICH RICHTIG GEHANDELT GESCHWEIGE DENN RICHTIG GEDACHT HABE:
Ich habe also dem Apache das CA Zertifikat im .pem BASE64 Format zur verfügung gestellt (liegt direkt im apache ordner), weil ich mir dachte, dass der Apache ja wissen muss welcher Zertifizierungsstelle er vertrauen kann(und da das Serverzertifikat auch von dieser CA ausgestellt worden ist).
Dann habe ich noch in der httpd.conf einige Einstellungen vorgenommen, wobei ich mir nicht sicher bin inwiefern diese agieren bzw. ob diese von nöten sind:
Auszug aus der httpd.conf
- Code: Select all
LDAPTrustedMode SSL
LDAPVerifyServerCert On // Der Apache erwartet ein Serverzertifikat.
LDAPTrustedGlobalCert CA_BASE64 cacert.pem //Public-Zertifikat der CA
<Location /ldap-status>
SetHandler ldap-status
Order deny,allow
Deny from all
Allow from ldapdc.testdomain.de
AuthLDAPURL ldaps://ldapdc.testdomain.de/CN=777666333,OU=Studenten,DC=testdomain,DC=de?uid?
//WIESO MÜSSEN CN,OU und DC angegebenwerden??? und ist das von der Syntax so richtig?
//Ich dachte das PHP-Skript sagt, welcher User die Abfrage startet!?!?!??!
AuthzLDAPAuthoritative off
Require valid-user //er erwartet einen im AD vorhandenen User
</Location>
Sooooo....weiter bin ich noch nicht.
Ich bin wirklich überfragt was ich jetzt machen soll...Vielleicht hab ich an dem ganzen Prinzip mit der Verschlüsselten Verbindung etwas nicht verstanden...kp.
Ein paar Denkanstöße würden mir sehr sehr helfen! Ich verzweifle sonst
PS: error.log und httpd.conf kann ich bei bedarf posten
Danke im voraus!