INSTALLATION ET CONFIGURATION DE OPENLDAP ET DE LOGICIELS LE COMPLETANT


Pascal VERRECCHIA

Octobre 2003    -     version 3.1
URL : http://www-lor.int-evry.fr/~maknavic/CADDISC/

L'objectif de ce document est de présenter l'installation et la configuration des logiciels nécessaires pour faire fonctionner OpenLDAP et SCVP au mieux de ces capacités dans le cadre du projet CADDISC. Vous pourrez, je l'espère, après lecture de cette documentation mettre en place rapidement : OpenSSL, Cyrus SASL, Berkeley DB et OpenLDAP.
Il est à préciser qu'il serait préférable de faire toutes ces installations sous root, ou sous un compte possédant des droits élargis.
 
 

1-Installation de OpenSSL


Le premier logiciel que nous allons mettre en place est OpenSSL, car certains parmi ceux qui vont suivre devront spécifier son utilisation dans leur configuration et nous devrons donc connaître son chemin d'accès.
La version que nous utilisons dans le cadre du projet CADDISC est OpenSSL-0.9.7c.

Placez-vous sur la racine ou sur /home, suivant l'endroit où vous avez téléchargé le logiciel. (Attention, il vous faudra auparavant changer un fichier de Openssl avant de compiler. Ce fichier se trouve sur la page web de CADDISC).

Entrez les lignes de commande suivantes :

tar -xvzf openssl-0.9.7c.tar.gz
cd openssl-0.9.7c
Appliquez les patches standard du système (make patch)
Appliquez les patches de l'ENST-Bretagne présentés dans openssl-diffs.
Cela modifiera les fichiers :
- Makefile.org pour permettre la compilation de scvp.
- crypto/objects/objects.txt pour prendre en compte les nouveaux OIDs liés à SCVP.

Appliquez les patches de l'INT présentés dans openssl_diffs_LDAP. Cela permettra de modifier le fichier crypto/x509v3/v3_utl.c. Vous pouvez aussi télécharger le fichier dans son entier à partir de l'URL : http://www-lor.int-evry.fr/~maknavic/CADDISC/SP21/caddiscConfFiles.tar.gz

Il faudra créer ensuite un répertoire scvp/ dans le répertoire crypto/ dans lequel vous placerez les fichiers de openssl-scvp.tgz (Makefile, scvp_asn.c, scvp.h).

Ensuite, placez vous dans le répertoire racine de openssl et faites (Surtout ne pas activer de debug sinon on n'aurait pas de librairies partagées) :
./config shared
make update
make
make test
make install

Si vous ne voulez pas installer cet OpenSSL dans le système par défaut, le test marche aussi avec un 'LD_LIBRAIRY_PATH='

Une précision pour FreeBSD :
- le plus simple est d'aller chercher le dernier "port" qui trafique la config pour créer les librairies partagées.
- il faut configurer (make configure).
- il faut refaire les objects et les stacks entre la configuration et la compilation, le "make update" dans la racine d'OpenSSL semble être le plus efficace.
- il faut compiler (make build).
 

2-Installation de Berkeley DB

La version que nous utilisons est : Berkeley DB-4.1.25
Nous considérons que cette installation suit celle de Openssl.
Entrez les lignes de commande suivantes :

cd ..
tar -xvfz db-4.1.25.tar.gz
cd db-4.1.25
cd dist
./configure
make
make install
 
 

3-Installation de Cyrus SASL


La version que nous utilisons est : cyrus-sasl-2.1.12.
Entrez les lignes de commande suivantes :

cd ..
tar -xvzf cyrus-sasl-2.1.12.tar.gz
cd cyrus-sasl-2.1.12
./configure
 --with-bdb-libdir=/usr/local/BerkeleyDB.4.1/lib/
 --with-bdb-incdir=/usr/local/BerkeleyDB.4.1/include/
 --with-openssl=/usr/local/ssl/
 --with-ldap=/root/openldap-2.1.12
make
make install
ln -s /usr/local/lib/sasl2   /usr/lib/sasl2
 
 

4-Installation de OpenLDAP


La version que nous utilisons est : openldap-2.1.12
Entrez les lignes de commande suivantes :

cd ..

ln -s /usr/local/BerkeleyDB.4.1/lib/libdb-4.1.so  /usr/lib/libdb-4.1.so
ln -s /usr/local/BerkeleyDB.4.1/lib/libdb-4.1.so  /usr/lib/libdb-4.so
ln -s /usr/local/BerkeleyDB.4.1/lib/libdb-4.1.so  /usr/lib/libdb.so
ln -s /usr/local/BerkeleyDB.4.1/lib/libdb-4.1.a  /usr/lib/libdb.a

tar -xfz openldap-2.1.12.tar
cd openldap-2.1.12

env CPPFLAGS= « -I/usr/local/BerkeleyDB.4.1/include » \
        LDFLAGS= « -L/usr/local/BerkeleyDB.4.1/lib » ./configure  \
   --enable-referrals \
   --enable-ipv6
   --with-cyrus-sasl
   --enable-cleartext
   --enable-crypt
   --enable-spasswd
   --enable-bdb
   --enable-dnssrv
   --enable-ldbm
   --enable-rewrite
   --enable-ldap
   --enable-meta
   --enable-monitor
   --enable-slurpd

make depend
make
make test
make install

Pour la configuration nécessaire au projet CADDISC, deux possibilités vous sont offertes :
- télécharger le fichier de configuration ayant servi pour CADDISC à l'INT ainsi que les schéma spécifiques à l'adresse http://www-lor.int-evry.fr/~maknavic/CADDISC/SP21/caddiscConfFiles.tar.gz. Il vous faudra alors modifier ces fichiers avec vos propres caractéristiques (DN, nom de serveur, mot de passe...)
- modifier le fichier de configuration standard de OpenLDAP (slapd.conf) accessible dans le répertoire /usr/local/etc/openldap/. Les différents types de schéma existants sont dans : /usr/local/etc/openldap/schema/.

Dans le second cas de figure, il vous faudra modifier votre fichier de configuration slapd.conf.

Voici les différentes opérations à effectuer :

Editez ce fichier (par exemple : emacs /usr/local/etc/openldap/slapd.conf)

Sous la ligne : include  /usr/local/etc/openldap/schema/core.schema

Rajoutez les 3 lignes suivantes :

include  /usr/local/etc/openldap/schema/cosine.schema
include  /usr/local/etc/openldap/schema/inetorgperson.schema
include  /usr/local/etc/openldap/schema/pki.schema

dans cet ordre précis!

Vous devrez créer par vous-même le schéma « pki.schema ». Les indications pour réaliser cette action seront indiquées par la suite. (Notez que tous les fichiers de configuration vous sont fournis sur la page web du projet)

Rajoutez les deux lignes suivantes :

allow bind_v2
allow bind_v3

où vous le désirez dans le document. Elles stipuleront que OpenLDAP sera à même d'utiliser les fonctionnalités de LDAPv2 et LDAPv3.

Nommez la base de donnée qui contiendra les informations de votre annuaire LDAP, grâce à la ligne :

database  nom_base_donnée

Indiquez quelle sera l'entrée principale de votre arborescence LDAP par la ligne : suffix

Indiquez quelle sera l'entrée correspondant à l'administrateur de l'annuaire LDAP par la ligne : rootdn

Indiquez le mot de passe correspondant à votre base LDAP qui ne devrait être connu que de l'administrateur par la ligne suivante : rootpw

Voici un exemple de fichier de configuration slapd.conf :
 

# $OpenLDAP: pkg/ldap/servers/slapd/slapd.conf,v 1.23.2.5 2002/11/26 18:26:01 kurt Exp $
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include  /usr/local/etc/openldap/schema/core.schema
include  /usr/local/etc/openldap/schema/cosine.schema
include  /usr/local/etc/openldap/schema/inetorgperson.schema
include  /usr/local/etc/openldap/schema/pki.schema

allow bind_v2
allow bind_v3

# Define global ACLs to disable default read access.

# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral ldap://root.openldap.org

pidfile  /usr/local/var/slapd.pid
argsfile /usr/local/var/slapd.args

# Load dynamic backend modules:
# modulepath /usr/local/libexec/openldap
# moduleload back_bdb.la
# moduleload back_ldap.la
# moduleload back_ldbm.la
# moduleload back_passwd.la
# moduleload back_shell.la

# Sample security restrictions
#
#   Disallow clear text exchange of passwords
# disallow bind_simple_unprotected
#
# Require integrity protection (prevent hijacking)
# Require 112-bit (3DES or better) encryption for updates
# Require 63-bit encryption for simple bind
# security ssf=1 update_ssf=112 simple_bind=64

# Sample access control policy:
# Root DSE: allow anyone to read it
# Other DSEs:
#  Allow self write access
#  Allow authenticated users read access
#  Allow anonymous users to authenticate
# Directives needed to implement policy:
# access to dn.base="" by * read
# access to *
# by self write
# by users read
# by anonymous auth
#
# if no access controls are present, the default policy is:
# Allow read by all# access to *
# by self write
# by users read
# by anonymous auth
#
# if no access controls are present, the default policy is:
# Allow read by all
#
# rootdn can always write!

#######################################################################
# ldbm database definitions
#######################################################################

database bdb
suffix  "o=INT,c=FR"
rootdn  "cn=Manager,o=INT,c=FR"
# Cleartext passwords, especially for the rootdn, should
# be avoid.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw  PW_FOR_OPENLDAPXXX
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd/tools. Mode 700 recommended.
directory /usr/local/var/openldap-data
# Indices to maintain
index objectClass eq

En ce qui concerne la création du nouveau schéma pki.schema qui nous sera utile par la suite pour l'utilisation de OpenCA, voici la marche à suivre :

Editez un fichier pki.schema (par exemple) que vous enregistrerez dans le répertoire /usr/local/etc/openldap/schema contenant les lignes suivantes :
 

objectclass ( 1.2.840.113533.7.67.4 NAME 'uniquelyIdentifiedUser'
     SUP top AUXILIARY
     MUST ( serialNumber )
     )
 

Les différentes installations et configurations des logiciels pour faire fonctionner OpenLDAP sont terminées.
Pour installer et configurer les logiciels adéquats de création et de gestion des certificats avec OpenCA/OpenLDAP, référez vous aux documents [Ver03] et [Mak03].
 

5-Références et téléchargement

Vous pourrez trouver de la documentation plus poussée et des liens de téléchargement des différents logiciels traités dans ce document aux adresses suivantes :

[Mak03] « Gestion de certificats par OpenCA », Maryline MAKNAVICIUS, octobre 2003
[Ver03] «Installation de OpenCA», Pascal VERRECCHIA, Maryline MAKNAVICIUS, octobre 2003

OpenLDAP   :  http://www.openldap.org/
Cyrus SASL   :  http://asg.web.cmu.edu/cyrus/
Berkeley DB  :  http://www.sleepycat.com/
OpenSSL   :  http://www.openssl.org/