====== LDAP einrichten ======
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
====Loglevel Ändern====
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.
====TLS einrichten====
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)
===== Sonstiges ======
LDAP Server neu starten
/etc/init.d/slapd resart
Verschlüsselte suche
ldapsearch -x -ZZ
===== PHP CODE =========
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);