Damit unser OpenLDAP-Server auch via ldaps (SSL) erreichbar ist, werden wir hier die Erstellung und Integration eines Server-Zertifikates sowie die nötigen Konfigurationsschritte näher betrachten.
Zuerst erstellen wir das Verzeichnis SSL in /etc/ldap. Anschließend generieren wir uns ein selbstsigniertes Zertifikat für unseren LDAP-Server und setzten die richtigen Rechte für den Server Schlüssel und Server Zertifikat.
mkdir -p /etc/ldap/ssl
cd /etc/ldap/ssl
openssl req -new -x509 -nodes -out server.crt -keyout server.key -days 9999
chown -R openldap:openldap /etc/ldap/ssl
chmod 0640 /etc/ldap/ssl/server.crt
chmod 0600 /etc/ldap/ssl/server.key
Als nächstes erstellen wir eine mod_certs.ldif, um LDAP so zu konfigurieren, dass OpenLDAP eine sichere Kommunikation über ein selbstsigniertes Zertifikat ermöglicht.
vim mod_certs.ldif
Folgendes LDIF Skript verwenden und eventuell die Pfade anpassen.
dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/ssl/server.key
dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/ssl/server.crt
Importieren der Konfigurationen auf den LDAP-Server. Sollte der Befehl den Fehler „Other (e.g., implementation specific) error (80)“ ausgeben, wird es vermutlich ein Berechtigungsfehler sein. Gehe sicher das der User openldap zugriff auf die Zertifikate hat (Bspw. mit sudo -u openldap ls /etc/ldap/ssl/).
ldapmodify -Y EXTERNAL -H ldapi:/// -f mod_certs.ldif
Konfiguration testen.
slaptest -u
Bei erfolgreicher Verifizierung sollte folgende Meldung erscheinen.
config file testing succeeded
OpenLDAP LDAPS (SSL) beibringen
Die Datei /etc/default/slapd bearbeiten und OpenLDAP konfigurieren, dass es auch auf SSL hört.
vim /etc/default/slapd
Folgende Zeile ersetzten.
SLAPD_URLS="ldapi:/// ldap:/// ldaps:///"
Anschließend slapd neustarten.
service slapd restart
Um sicher zu gehen, dass LDAP auch den Port für SSL geöffnet hat, kann man mit folgenden Befehl überprüfen.
netstat -tulpen | grep 636
root@server:~# netstat -tulpen | grep 636
tcp 0 0 0.0.0.0:636 0.0.0.0:* LISTEN 0 438118593 41836/slapd
tcp6 0 0 :::636 :::* LISTEN 0 438118594 41836/slapd
LDAP-Linux-Client selbstsignierte Zertifikate erlauben
Wer über LDAP auf einen Server mit einem selbstsignierten Zertifikat zugreifen möchte, wird vermutlich scheitern. Dies gilt auch bei php-ldap.
Um dies zu akzeptieren muss unter Debian die Datei /etc/ldap/ldap.conf bearbeitet werden.
vim /etc/ldap/ldap.conf
Hier ans Ende der Datei folgende Umgebungsvariable hinzufügen.
TLS_REQCERT ALLOW