In vielen Homelabs läuft LDAP zunächst unverschlüsselt – gerade zum Testen oder für interne Dienste. Spätestens wenn Clients wie Proxmox, Keycloak oder andere Authentifizierungsdienste angebunden werden, sollte LDAPS (LDAP over SSL) genutzt werden. In diesem Artikel zeige ich dir, wie du LDAPS mit LLDAP einrichtest, inklusive Zertifikatserstellung, Konfiguration und Nutzung des Standard-Ports 636. **Anmerkung: **Ich nutze ein selbstsigniertes Zertifikat! Man könnte es auch über einen NGINX Reverseproxy laufen lassen.
Voraussetzungen
- Laufender LLDAP Server (helper Script oder eben schnell selbst ein LXC erstellen.)
- Shell-Zugriff auf den Server
opensslinstalliert- Benutzer
lldapexistiert (Standard bei LLDAP)
1. Selbstsigniertes Zertifikat für LDAPS erstellen
Für den Betrieb von LDAPS benötigst du ein TLS-Zertifikat. Im Homelab reicht in der Regel ein selbstsigniertes Zertifikat vollkommen aus.
Zertifikat erzeugen
Hinweis: Bitte den Hostname und die IP des LLDAP am Ende eintragen!
openssl req -x509 -newkey rsa:4096 \
-keyout key.pem \
-out cert.pem \
-sha256 \
-days 3650 \
-nodes \
-subj "/CN=Dein-Server-Hostname.lab" \
-addext "subjectAltName=DNS:Dein-Server-Hostname.lab,IP:IPDESLLDAPSERVER"
2. Zertifikate an den richtigen Ort verschieben
mkdir -p /etc/lldap/certs
mv cert.pem key.pem /etc/lldap/certs/
3. Berechtigungen für LLDAP setzen
chown -R lldap:lldap /etc/lldap/certs
chmod 600 /etc/lldap/certs/*
4. LLDAP Konfiguration anpassen
Den folgenden Schnipsel am Ende der Datei einfügen:
(...)
[ldaps_options]
enabled = true
port = 636
cert_file = "/etc/lldap/certs/cert.pem"
key_file = "/etc/lldap/certs/key.pem"
5. Standard-Port 636 freigeben
Ein normaler Benutzer (wie lldap) darf standardmäßig keine Ports unter 1024 öffnen. Nur root darf das.
setcap 'cap_net_bind_service=+ep' /usr/bin/lldap
6. LLDAP neu starten
systemctl restart lldap.service
6.1 LLDAP manuel starten
sudo -u lldap /usr/bin/lldap run
Loading configuration from lldap_config.toml
WARNING: A key_seed was given, we will ignore the key_file and generate one from the seed! Set key_file to an empty string in the config to silence this message.
2026-01-05T21:05:32.000118041+00:00 INFO set_up_server [ 6.39ms | 100.00% ]
2026-01-05T21:05:32.000127258+00:00 INFO ┝━ i [info]: Starting LLDAP version 0.6.2
2026-01-05T21:05:32.006134222+00:00 INFO ┝━ i [info]: Starting the LDAP server on port 3890
2026-01-05T21:05:32.006539710+00:00 INFO ┝━ i [info]: Starting the LDAPS server on port 636
2026-01-05T21:05:32.006776848+00:00 INFO ┕━ i [info]: Starting the API/web server on port 17170
2026-01-05T21:05:32.006877689+00:00 INFO i [info]: starting 1 workers
2026-01-05T21:05:32.006979458+00:00 INFO i [info]: Actix runtime found; starting in Actix runtime
2026-01-05T21:05:32.007042391+00:00 INFO i [info]: starting service: "ldap", workers: 1, listening on: 0.0.0.0:3890
2026-01-05T21:05:32.007047920+00:00 INFO i [info]: starting service: "ldaps", workers: 1, listening on: 0.0.0.0:636
2026-01-05T21:05:32.007052158+00:00 INFO i [info]: starting service: "http", workers: 1, listening on: 0.0.0.0:17170
2026-01-05T21:05:32.011801839+00:00 INFO i [info]: DB Cleanup Cron started
2026-01-05T21:05:37.671568369+00:00 INFO i [info]: SIGINT received; starting forced shutdown
2026-01-05T21:05:37.671625748+00:00 INFO i [info]: shutting down idle worker
2026-01-05T21:05:37.671868554+00:00 INFO i [info]: accept thread stopped
2026-01-05T21:05:37.973709457+00:00 INFO i [info]: DB Cleanup stopped
7. Log überprüfen
journalctl -u lldap -f
Jan 05 22:26:17 lldap lldap[889]: 2026-01-05T21:26:17.153883195+00:00 INFO ┝━ i [info]: Starting LLDAP version 0.6.2
Jan 05 22:26:17 lldap lldap[889]: 2026-01-05T21:26:17.157970276+00:00 INFO ┝━ i [info]: Starting the LDAP server on port 3890
Jan 05 22:26:17 lldap lldap[889]: 2026-01-05T21:26:17.158247870+00:00 INFO ┝━ i [info]: Starting the LDAPS server on port 636
Jan 05 22:26:17 lldap lldap[889]: 2026-01-05T21:26:17.158394891+00:00 INFO ┕━ i [info]: Starting the API/web server on port 17170
Jan 05 22:26:17 lldap lldap[889]: 2026-01-05T21:26:17.158681059+00:00 INFO i [info]: starting 1 workers
Jan 05 22:26:17 lldap lldap[889]: 2026-01-05T21:26:17.158730173+00:00 INFO i [info]: Actix runtime found; starting in Actix runtime
Jan 05 22:26:17 lldap lldap[889]: 2026-01-05T21:26:17.158784285+00:00 INFO i [info]: starting service: "ldap", workers: 1, listening on: 0.0.0.0:3890
Jan 05 22:26:17 lldap lldap[889]: 2026-01-05T21:26:17.158830613+00:00 INFO i [info]: starting service: "ldaps", workers: 1, listening on: 0.0.0.0:636
Jan 05 22:26:17 lldap lldap[889]: 2026-01-05T21:26:17.158880140+00:00 INFO i [info]: starting service: "http", workers: 1, listening on: 0.0.0.0:17170
Jan 05 22:26:17 lldap lldap[889]: 2026-01-05T21:26:17.159653346+00:00 INFO i [info]: DB Cleanup Cron started
8. Funktionstest
Lauscht was auf Port 636?
ss -tulpn | grep 636
tcp LISTEN 0 2048 0.0.0.0:636 0.0.0.0:* users:(("lldap",pid=889,fd=11))
Fazit
Mit wenigen Schritten lässt sich LDAPS in LLDAP sauber und sicher aktivieren.