Exemples de commandes vers le serveur LDAP

Note : le type d'objet retenu pour les personnes dans l'annuaire téléphonique ne permet pas d'ajouter une adresse email (changer le type pour ajouter organizationalPerson et inetOrgPerson dans les fichiers ldif).

# [sur le serveur]
# le port FreeBSD configure mal le repertoire de stockage des donnees de la base :
server# chown ldap:ldap /var/db/openldap-*

# autoriser le LDAP sécurisé
# dans /usr/local/etc/openldap/slapd.conf
TLSCertificateFile      /usr/local/etc/openldap/ldap.cert
TLSCertificateKeyFile   /usr/local/etc/openldap/ldap.key
TLSCACertificateFile    /usr/local/etc/openldap/ca.cert
TLSVerifyClient        never

# les certificats sont à leur place :
unx-1923# pwd
/usr/local/etc/openldap
unx-1923# ll
total 22
-r--------  1 ldap  ldap   1619 Jan 16 14:17 ca.cert
-rw-r--r--  1 root  wheel  1751 Jan 16 14:17 ca.key
-r--------  1 ldap  ldap   1111 Jan 16 14:17 ldap.cert
-rw-r--r--  1 root  wheel   447 Jan 16 12:03 ldap.conf
-rw-r--r--  1 root  wheel   333 Jan 15 16:38 ldap.conf.default
-r--------  1 ldap  ldap    887 Jan 16 14:17 ldap.key
drwxr-xr-x  2 root  wheel   512 Jan 15 16:40 schema
-rw-r--r--  1 ldap  ldap   4046 Jan 16 14:21 slapd.conf
-rw-------  1 root  wheel  2156 Jan 15 16:40 slapd.conf.default

dans /etc/rc.conf : (autoriser le port ldaps)
slapd_enable="YES"
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap:/// ldaps:///"'
slapd_sockets="/var/run/openldap/ldapi"

Nota :
Pour la version 5.2 de FreeBSD, slapd est démarré depuis un script dans /etc/rc.d,
pour disposer des infos LDAP au plus tôt
Démarrage : 	/etc/rc.d/slapd start
Arrêt : 	/etc/rc.d/slapd stop

# [sur le client]
# avec une base vide :
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
# idem en mode verbeux
ldapsearch -v  -x -b '' -s base '(objectclass=*)' namingContexts
# preparation de donnees a ajouter
vi test.ldif
# addition de ces donnees a la base (sous le compte root)
ldapadd -x -D "cn=Manager,dc=sfim,dc=fr" -W -f test.ldif
# verification que les donnees sont entrees
ldapsearch -v  -x -b 'dc=sfim,dc=fr' '(objectclass=*)'

# creation de l'annuaire en ldif / utf8
perl csv2ldif.pl < annuaire_Massy.csv > annu_latin1.ldif
iconv -f LATIN1 -t UTF8  annu_latin1.ldif  > annu_utf8.ldif

# verifier que les noms de personne sont bien uniques !
# pour ajouter des noms dans l'annuaire LDAP :
ldapadd -x -D "cn=Manager,dc=sfim,dc=fr" -W -f annu_utf8.ldif

# pour effacer des entrees dans l'annuaire :
ldapdelete -x -D "cn=Manager,dc=sfim,dc=fr" -W -f bug.list

# acces dans KMAIL :
# dans la configuration du carnet d'adresse :
# fenetre preference / selection LDAP
# ajouter un hote
# hote : localhost / port 389 / base DN dc=sfim,dc=fr
# et les requetes ont l'air de fonctionner correctement (sous Linux/Mdk - pas sous FriBi)

# pour sauver le contenu d'une base LDAP :
# arrêter le serveur LDAP (sinon, pas d'accès à la base)
/etc/init.d/ldap stop
# dump de la base sous format LDIF
/usr/sbin/slapcat -l dump.ldif
# démarrage du serveur LDAP (pour Linux)
/etc/init.d/ldap start
# démarrage du serveur LDAP (pour FreeBSD)
/usr/local/etc/rc.d/slapd start

Vérification faite de l'accès au démon LDAP depuis KMAIL et Evolution.

Note : recherche sur des portions du nom non satisfaisante (recherche uniquement sur le début du nom, p. ex. le prénom mais pas sur une sous-chaîne quelconque du nom)

# voir aussi une recherche comme suit :
w00-3415% ldapsearch -x "(sn=bass*)" cn sn telephoneNumber
# idem dans GQ ec choisissant search->filter et 'sn=bass*' dans la fenetre de dialogue

Exemples de configuration avec chiffrement

# sur le serveur : création d'un rep pour le démon LDAP
mkdir -p /var/run/ldap
chown ldap:ldap /var/run/ldap
# creation d'un certificat pour SSL/TLS (CA : autorité de certification)
# cle privée
openssl genrsa -des3 -out ca.key 2048
# certificat associé
openssl req -new -x509 -days 365 -key ca.key -out ca.cert
# creation d'un certification pour LDAP
openssl genrsa -out ldap.key 1024
# creation d'un "Certificate Signing Request"
openssl req -new -key ldap.key -out ldap.csr
# creation d'un certificat pour le serveur LDAP
openssl x509 -req -in ldap.csr -out ldap.cert -CA ca.cert -CAkey ca.key -CAcreateserial -days 365
# examiner le certificat
openssl x509 -in ldap.cert -text -noout

# sur le client
(transfert du certificat du serveur vers le client)
# vérification du DNS
(verification correspondance directe et reverse)
w00-3415# nslookup unx-1923
Server:  cyclamen.sfim.fr
Address:  191.250.99.1

Name:    unx-1923.sfim.fr
Address:  191.250.106.234

w00-3415# nslookup 191.250.106.234
Server:  cyclamen.sfim.fr
Address:  191.250.99.1

Name:    unx-1923.sfim.fr
Address:  191.250.106.234
w00-3415#
# vérification avec ldapsearch
ldapsearch -H ldaps://unx-1923.sfim.fr -v -d1024 -x -b 'dc=sfim,dc=fr' '(objectclass=*)'
# vérification de connexion en SSL (bug : mauvais certificat)
openssl s_client -CAfile /etc/ssl/ca.cert -connect unx-1923.sfim.fr:636
...
verify error:num=18:self signed certificate
...
verify error:num=7:certificate signature failure
...

(mais verification OK par le script perl avec Net::LDAPS !!)