LDAP Server installieren
apt-get install slapd ldap-utils
Ueber den folgenden Befehl kann dann der User und DN konfiguriert werden.
dpkg-reconfigure slapd
Einfaches Tool zum Administrieren
apt-get install jxplorer
Zum Ändern des Loglevels muss zuerst eine LIDF Datei erstellt werden mit folgendem Inhalt: Häufige LogLevelTypen: stats | any | none
dn: cn=config changeType: modify replace: olcLogLevel olcLogLevel: stats
Danach wird die Datei per Ldapmodify eingelesen:
ldapmodify -Y EXTERNAL -H ldapi:/// -f loglevel.ldif
Mit folgendem Befehl kann der aktuelle LogLevel angezeigt werden
ldapsearch -Y external -H ldapi:/// -b cn=config "(objectClass=olcGlobal)" olcLogLevel
Die Logeinträge werden in die Datei /var/log/syslog geschrieben.
Zertifikate erstellen
sudo apt-get install gnutls-bin sudo mkdir /var/ssl cd /var/ssl
Eigenes CA-Zertifikat erstellen
ca.cfg neu anlegen
cn = meinedomain ca cert_signing_key
sudo sh -c "certtool --generate-privkey > cakey.pem" sudo certtool --generate-self-signed --load-privkey cakey.pem --template ca.cfg --outfile cacert.pem
Private Key generieren
sudo sh -c "certtool --generate-privkey > ldap_slapd_key.pem
Server Zertifikat
slapd.cfg neu anlegen
organization = oesi cn = ldap.oesi.org tls_www_server encryption_key signing_key
sudo certtool --generate-certificate --load-privkey ldap_slapd_key.pem --load-ca-certificate cacert.pem --load-ca-privkey cakey.pem --template slapd.cfg --outfile ldap_slapd_cert.pem
Zertifikate installieren
sudo install -D -o openldap -g openldap -m 600 /var/ssl/ldap_slapd_key.pem /etc/ssl/private/ldap_slapd_key.pem sudo install -D -o openldap -g openldap -m 600 /var/ssl/ldap_slapd_cert.pem /etc/ssl/certs/ldap_slapd_cert.pem sudo install -D -o openldap -g openldap -m 600 /var/ssl/cacert.pem /etc/ssl/certs/ldap_slapd_cacert.pem
Zum hinzufügen der Zertifikate zum Server tls.ldif erstellen mit folgendem inhalt
dn: cn=config changetype: modify replace: olcTLSCACertificateFile olcTLSCACertificateFile: /etc/ssl/certs/ldap_slapd_cacert.pem dn: cn=config changetype: modify replace: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/ssl/private/ldap_slapd_key.pem dn: cn=config changetype: modify replace: olcTLSCertificateFile olcTLSCertificateFile: /etc/ssl/certs/ldap_slapd_cert.pem
und einlesen
ldapadd -Y EXTERNAL -H ldapi:/// -f tls.ldif
/etc/ldap/ldap.conf anpassen
BASE dc=oesi,dc=org URI ldap://localhost ldap_version 3 #ssl start_tls #TLS_CACERT /etc/ssl/certs/ldap_slapd_cacert.pem TLS_REQCERT never
Apache neu starten damit die ldap.conf neu eingelesen wird!
Bei dem Fehler
main: TLS init def ctx failed: -1
Openldap zur Gruppe ssl-cert hinzufügen
usermod -a -G ssl-cert openldap
Falls der folgende Fehler auftritt liegt es eventuell an den Berechtigungen der Zertifikate. Diese müssen vom User openldap lesbar sein. Und sollten von anderen Usern nicht lesbar sein.
modifying entry "cn=config" ldap_modify: Other (e.g., implementation specific) error (80)
LDAP Server neu starten
/etc/init.d/slapd resart
Verschlüsselte suche
ldapsearch -x -ZZ
switch($type) { case 'starttls': $port=389; $ldap_url='ldap://'.LDAP_SERVER; break; case 'ldaps': $port=636; $ldap_url='ldaps://'.LDAP_SERVER; break; case 'plain': $port=389; $ldap_url='ldap://'.LDAP_SERVER; break; } $ldap_conn = ldap_connect($ldap_url, $port); ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); if($type=='starttls') if(!ldap_start_tls($this->ldap_conn)) die('StartTLS fehlgeschlagen'); ldap_bind($ldap_conn, $binddn,$bindpw);