[Debian Squeeze] Problème configuration serveur OpenLDAP

Bonsoir à vous, je suis face à un problème qui me démange depuis avant-hier.

Je travaille sur un projet dans une entreprise sur la mise en place d’un serveur LDAP qui fera office d’annuaire (et plein d’autres trucs mais on se contentera de ce serveur pour l’instant)

J’accède à une Debian Squeeze à l’aide du logiciel Putty depuis ma station de travail (Windows 7), Debian possède Webmin donc je peux y accéder grâce à une adresse IP sous le port 10000 : je peux accéder aux différents modules du serveur LDAP.

Dans la partie “Server LDAP”, quand je veux consulter la database ou créer un arbre , ça me dit que le DN est invalide …
Pourtant dans les fichiers de configuration (et aussi sur Webmin), j’ai mis un :

rootdn : "cn=admin,dc=lra,dc=gm" rootpw : test

(Je n’ai pas encore crypté le mot de passe, de toute façon, le problème ne vient pas de là !)

Donc j’ai passé toute une après-midi à chercher pourquoi mon DN était invalide … et je n’ai rien trouvé …
D’ailleurs, je n’arrive pas à injecter des fichiers .ldif à l’aide de la commande ldapadd, ça m’affiche une erreur sur la console disant :

En ayant fait des recherches sur ce message d’erreur, cela veut dire que les identifiants utilisés ne sont pas bons apparemment … ah?

Du coup j’ai utilisé la commande dpkg-reconfigure slapd pour réinstaller le serveur et précisez que le DN est bien lra.gm et que le mot de passe est test mais … toujours les mêmes erreurs au dessus.

J’implore donc l’aide des connaisseurs de LDAP !

Demain, je peux vous fournir mon ldap.conf et slapd.conf. Merci.

Pour vous aider un peu plus, je vous fournis mes fichiers de config :

ldap.conf

[code]#BASE dc=example,dc=com
#URI ldap://ldap.example.com ldap://ldap-master.example.com:666

#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never

LDAP Client Settings

uri ldap://127.0.0.1:389/
BASE dc=lra,dc=gm[/code]

slapd.conf

[code]# This is the main slapd configuration file. See slapd.conf(5) for more

info on the configuration options.

#######################################################################

Global Directives:

Features to permit

Schema and objectClass definitions

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema

Where the pid file is put. The init.d script

will not stop the server if you change this.

pidfile /var/run/slapd/slapd.pid

List of arguments that were passed to the server

argsfile /var/run/slapd/slapd.args

Read slapd.conf(5) for possible values

loglevel none

Where the dynamically loaded modules are stored

modulepath /usr/lib/ldap
moduleload back_hdb

The maximum number of entries that is returned for a search operation

sizelimit 500

The tool-threads parameter sets the actual amount of cpu’s that is used

for indexing.

tool-threads 1

#######################################################################

Specific Backend Directives for hdb:

Backend specific directives apply to this backend until another

‘backend’ directive occurs

backend hdb

#######################################################################

Specific Backend Directives for ‘other’:

Backend specific directives apply to this backend until another

‘backend’ directive occurs

#backend

#######################################################################

Specific Directives for database #1, of type hdb:

Database specific directives apply to this databasse until another

‘database’ directive occurs

database hdb

The base of your directory in database #1

suffix dc=lra,dc=gm

rootdn directive for specifying a superuser on the database. This is needed

for syncrepl.

rootdn “cn=admin,dc=lra,dc=gm”
rootpw test

Where the database file are physically stored for database #1

directory “/var/lib/ldap”

The dbconfig settings are used to generate a DB_CONFIG file the first

time slapd starts. They do NOT override existing an existing DB_CONFIG

file. You should therefore change these settings in DB_CONFIG directly

or remove DB_CONFIG and restart slapd for changes to take effect.

For the Debian package we use 2MB as default but be sure to update this

value if you have plenty of RAM

dbconfig set_cachesize 0 2097152 0

Sven Hartge reported that he had to set this value incredibly high

to get slapd running at all. See http://bugs.debian.org/303057 for more

information.

Number of objects that can be locked at the same time.

dbconfig set_lk_max_objects 1500

Number of locks (both requested and granted)

dbconfig set_lk_max_locks 1500

Number of lockers

dbconfig set_lk_max_lockers 1500

Indexing options for database #1

index objectClass eq

Save the time that the entry gets modified, for database #1

lastmod on

Checkpoint the BerkeleyDB database periodically in case of system

failure and to speed slapd shutdown.

checkpoint 512 30

Where to store the replica logs for database #1

replogfile /var/lib/ldap/replog

The userPassword by default can be changed

by the entry owning it if they are authenticated.

Others should not be able to see it, except the

admin entry below

These access lines apply to database #1 only

access to attribute=userPassword
by dn=“cn=admin,dc=lra,dc=gm” write
by anonymous auth
by self write
by * none

Ensure read access to the base for things like

supportedSASLMechanisms. Without this you may

have problems with SASL not knowing what

mechanisms are available and the like.

Note that this is covered by the ‘access to *’

ACL below too but if you change that as people

are wont to do you’ll still need this if you

want SASL (and possible other things) to work

happily.

access to dn.base="" by * read

The admin dn has full write access, everyone else

can read everything.

access to *
by dn=“cn=admin,dc=lra,dc=gm” write
by * read

For Netscape Roaming support, each user gets a roaming

profile for which they have write access to

#access to dn=".*,ou=Roaming,o=morsnet"

by dn=“cn=admin,dc=citroen,dc=gm” write

by dnattr=owner write

#######################################################################

Specific Directives for database #2, of type ‘other’ (can be hdb too):

Database specific directives apply to this databasse until another

‘database’ directive occurs

#database

The base of your directory for database #2

#suffix “dc=debian,dc=gm”[/code]

Quelques commandes que j’exécute sur la console :

uname -a

Linux debian.lra.gm 2.6.32-5-amd64

ldapsearch -x -b dc=lra,dc=gm

[code]# extended LDIF

LDAPv3

base <dc=lra,dc=gm> with scope subtree

filter: (objectclass=*)

requesting: ALL

search result

search: 2
result: 32 No such object

numResponses: 1[/code]

Quand je veux injecter un fichier .ldif

ldapadd -x -D “cn=admin,dc=lra,dc=gm” -w test -f /etc/AjoutRacine.ldif

ldap_bind: Invalid credentials (49)

Quand je veux accéder à la base de données ou créer un arbre sur le serveur LDAP depuis le Webmin (1.610), je tombe sur ce message d’erreur :

Failed to create new tree : Failed to bind to LDAP server as admin : invalid DN

Voili, voilou, j’espère que les amateurs du LDAP sauront m’aider car là … je suis à court d’idées ! :think: (Je ne vois pas pourquoi mon DN est invalide?!)

J’avance doucement de mon côté en attendant, je me suis amusé à installer phpLDAPadmin, l’installation était simple, je tombe sur la fenêtre de connexion, j’essaye de me connecter sous le compte admin en remplissant les champs suivants :

DN de connexion : cn=admin,dc=lra,dc=gm
Mot de passe : test

Et il me dit :

Unable to connect to LDAP server Mon serveur LDAP Erreur: Invalid credentials (49) for user Echec de l'authentification auprès du serveur Invalid Username or Password

Quand je me connecte en mode anonyme (lecture seule) … bah ça marche! Je me retrouve sur mon serveur LDAP complétement vide mais j’y ai accès!

CCL : En faites… je viens de comprendre que DN signifie “Nom distinct” donc le nom admin n’est pas le bon !

Donc le compte admin n’existe pas en quelque sorte?! What the …

Bon bah … j’ai haussé mes manches, je me suis dit : “bon ok, tu veux jouer à ça? Je vais tout recommencer du début en réinstallant tout, comme ça …”

Du coup, grâce à la commande apt-get --purge remove slapd, j’ai supprimé complètement le serveur LDAP puis je l’ai réinstallé proprement en précisant que mon nom de domaine est bien lra.gm , etc…

Je relance le serveur, je vais sur Webmin, je vais sur “Browse Database” …

Failed to create new tree : Failed to bind to LDAP server as admin : invalid DN

A partir de là, je commençais à désespérer …
Je me dirige vers mon phpLDAPadmin, j’entre mon mot de passe et … miracle! Ça marche! :dance:

Mais pourquoi donc cela ne marchait pas sur Webmin? Je me suis donc penché sur le champ “Login for LDAP Server” et j’avais mis : admin (tout simplement).
Je remplace donc par : cn=admin,dc=lra,dc=gm et … :dance: that’s work ! :dance:

Donc … euh … vraiment désolé pour le post inutile ! J’espère que ça aidera plus d’un !
Morale de l’histoire : Si tu es face à un serveur LDAP déjà présent, ne t’embête pas, réinstalle tout et reconfigure le proprement!