Inhaltsverzeichnis

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);