Windows Server
Das PHP-Modul ldap wird unter Windows als php_ldap.dll geladen und verwendet die OpenLDAP-Client-Bibliotheken. Bei einer Verbindung über LDAPS oder mit StartTLS wird das Serverzertifikat nicht über den Windows-Zertifikatspeicher, sondern über die von OpenLDAP verwendete TLS-Schicht überprüft.
Das Hinzufügen des Zertifikats zum vertrauenswürdigen Windows-Zertifikatspeicher wird bei der Überprüfung einer LDAPS-Verbindung in php_ldap.dll nicht verwendet und hat keinen Einfluss auf OpenLDAP. OpenLDAP muss den Pfad zum CA-Zertifikat oder CA-Bundle erhalten, das das Serverzertifikat des Verzeichnisdienstes ausgestellt hat.
Funktionsweise
Beim Aufbau einer TLS-Verbindung sendet der LDAP-Server sein Zertifikat. OpenLDAP prüft, ob von diesem Zertifikat aus eine vertrauenswürdige Kette zu einer bekannten Zertifizierungsstelle aufgebaut werden kann. Ist das CA-Zertifikat in der OpenLDAP-Konfiguration nicht angegeben, schlägt die Verbindung mit einem Zertifikatsüberprüfungsfehler fehl.
Unter Windows verwendet PHP LDAP in der Regel die Datei ldap.conf. Der Parameter TLS_CACERT in dieser Datei legt den Pfad zum CA-Zertifikat oder zur Bundle-Datei fest. Damit der PHP-Prozess die erforderliche Konfigurationsdatei und das Zertifikat verwendet, legen Sie die Systemumgebungsvariablen LDAPCONF und LDAPTLS_CACERT fest.
Konfiguration
Bitte beachten Sie:
- Die Befehle müssen in PowerShell als Administrator ausgeführt werden.
- Starten Sie nach den Änderungen den Windows Server neu, damit alle Prozesse die aktualisierte Umgebung übernehmen.
- Erstellen Sie ein Verzeichnis für die OpenLDAP-Konfiguration:
- PowerShell
New-Item -ItemType Directory -Force C:\openldap\sysconf
- Platzieren Sie das CA-Zertifikat oder CA-Bundle in diesem Verzeichnis:
C:\openldap\sysconf\ldaps-ca-bundle.cer
Die Datei muss im PEM/Base64-Format vorliegen:
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Wird in der Infrastruktur eine Zwischenzertifizierungsstelle verwendet, fügen Sie die vollständige CA-Zertifikatskette in dieselbe Datei ein.
- Erstellen Sie die Datei
C:\openldap\sysconf\ldap.confmit folgendem Inhalt:
- text
TLS_CACERT C:/openldap/sysconf/ldaps-ca-bundle.cer
TLS_REQCERT demand
TLS_CACERT gibt den Pfad zum CA-Bundle an. Es wird empfohlen, im Pfad Schrägstriche / zu verwenden.
- Legen Sie die Systemumgebungsvariablen für OpenLDAP fest:
- PowerShell
[Environment]::SetEnvironmentVariable("LDAPCONF", "C:\openldap\sysconf\ldap.conf", "Machine")
[Environment]::SetEnvironmentVariable("LDAPTLS_CACERT", "C:/openldap/sysconf/ldaps-ca-bundle.cer", "Machine")
- Starten Sie IIS neu:
- PowerShell
iisreset