LDAP, probleme..

Bonjour,
Je suis actuellement en stage, je dois monter un LDAP avec SSL et tout ça..
Lorsque je lance la commande ldapsearch j'ai un message d'erreur qui est le suivant :
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
	additional info: A TLS packet with unexpected length was received.

Savez vous comment regler le problème ?
Merci d'avance

19 réponses

Résumé de la discussion

Problème central : lors de la configuration d’un LDAP avec SSL, l’erreur « ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1) » et l’indication « A TLS packet with unexpected length » bloquent la connexion. Pour diagnostiquer, plusieurs conseils portent sur la vérification du fichier slapd.conf et l’utilisation de slaptest, le contrôle du backend BDB et le redémarrage propre du service. D’autres échanges évoquent des conflits comme une base déjà en cours d’utilisation, des incohérences entre slapd.conf et cn=config.ldif et des problèmes de démarrage liés au fichier de configuration. En cas de persistance, il est recommandé de stopper le service, lancer slapindex et relancer le ldap en SSL, tout en consultant les logs pour repérer des index manquants tels que gidNumber et sambaSID.

Bobot (l’IA à votre service)
  1. Le problème est résolu, mais j'ai un nouveau message d'erreur dans les logs :

    bdb_equality_candidates: (gidNumber) not indexed
    bdb_equality_candidates: (sambaSID) not indexed
    bdb_equality_candidates: (sambaSID) not indexed
    bdb_equality_candidates: (gidNumber) not indexed
    bdb_equality_candidates: (sambaSID) not indexed
    bdb_equality_candidates: (sambaSID) not indexed
    bdb_equality_candidates: (gidNumber) not indexed
    bdb_equality_candidates: (sambaSID) not indexed
    bdb_equality_candidates: (sambaSID) not indexed


    Merci d'avance !
    0
    1. Bonjour,

      Tout d'abord fait un stop de ton LDAP puis tu lance slapindex.
      Ensuite du relance ton ldap en ssl.
      Ça devrait fonctionner.
      0
      1. Mh c'est de pire en pire, mon service sldap ne démarre plus..

        root@namauth:~# /etc/init.d/slapd restart
        Stopping OpenLDAP: slapd.
        Starting OpenLDAP: slapd failed!
        root@namauth:~# tail -f /var/log/syslog
        Jan 28 11:43:09 namauth slapd[24074]: <= bdb_equality_candidates: (gidNumber) not indexed
        Jan 28 11:43:09 namauth slapd[24074]: <= bdb_equality_candidates: (sambaSID) not indexed
        Jan 28 11:43:09 namauth slapd[24074]: <= bdb_equality_candidates: (sambaSID) not indexed
        Jan 28 11:46:09 namauth slapd[24074]: <= bdb_equality_candidates: (gidNumber) not indexed
        Jan 28 11:46:09 namauth slapd[24074]: <= bdb_equality_candidates: (sambaSID) not indexed
        Jan 28 11:46:09 namauth slapd[24074]: <= bdb_equality_candidates: (sambaSID) not indexed
        Jan 28 11:47:04 namauth slapd[11316]: @(#) $OpenLDAP: slapd 2.4.23 (Jun 15 2011 13:31:57) $#012#011@incagijs:/home/thijs/debian/p-u/openldap-2.4.23/debian/build/servers/slapd
        Jan 28 11:47:04 namauth slapd[11316]: daemon: bind(8) failed errno=98 (Address already in use)
        Jan 28 11:47:04 namauth slapd[11316]: slapd stopped.
        Jan 28 11:47:04 namauth slapd[11316]: connections_destroy: nothing to destroy.


        Que se passe-t-il ???
        0
        1. Quand je fais un status :
          /etc/init.d/slapd status
          could not access PID file for slapd ... failed!
          


          Pour ce qui est de mon index, je l'ai modifié, mais toujours les mêmes messages de log, surement dû au non fonctionnement de slapd..
          0
          1. J'ajoute ceci si cela peut aider :

            # slapadd 
            hdb_db_open: database "dc=math,dc=univ-nantes,dc=prive": database already in use.
            backend_startup_one (type=hdb, suffix="dc=math,dc=univ-nantes,dc=prive"): bi_db_open failed! (-1)
            slap_startup failed
            
            0
            1. Alors pour info le slapadd se fait avec l'annuaire stoppé. Dans ton cas tu as l'erreur "already in use" car pour lui l'annuaire est démarré.

              Essaie de voir si l'annuaire n'est tout de même démarré en faisant :
              ps -edf | grep ldap

              Pour ton erreur de status, je penses qu'il s'agit d'un problème de droit. Peux-tu faire un status en root ?
              0
              1. Je suis en root.

                # ps -edf | grep ldap
                root      1779  1750  0 15:32 pts/0    00:00:00 grep ldap
                


                # /etc/init.d/slapd status
                could not access PID file for slapd ... failed!
                
                0
                1. Lorsque tu fais un start tu obtiens la même erreur ?

                  De plus, peux-tu faire un copier-coller de ton slapd.conf ?

                  Normalement le fichier PID se trouve dans /var/run/slapd.pid par défaut, il faudrait vérifier qu'il n'y en ait pas. Normalement non d'après le ps que tu as fait avant.
                  0
                  1. Je te remercie de ton suivi.

                    # /etc/init.d/slapd start
                    Starting OpenLDAP: slapd.
                    


                    Et ensuite avec un status j'obtiens la même erreur.

                    Mon lsapd.conf :
                    include /etc/ldap/schema/core.schema
                    include /etc/ldap/schema/cosine.schema
                    include /etc/ldap/schema/nis.schema
                    include /etc/ldap/schema/inetorgperson.schema
                    include /etc/ldap/schema/samba.schema


                    En effet il n'y a pas de slapd.pid
                    0
                    1. Ton fichier slapd.conf me semble "petit".
                      J'ai l'impression qu'il manque au moins ces 2 lignes :

                      pidfile /var/run/slapd/slapd.pid
                      argsfile /var/run/slapd/slapd.args

                      Ajoutes les à ton fichier conf et refait un test de start et status.

                      Vérifie si elles sont présentes dans le fichier cn=config.ldif également.
                      0
                      1. Je viens de les ajouter à mon slapd.conf, mais quand je les mets dans cn=config.ldif (c'est bien le fichier qui se trouve dans /etc/ldap/slapd.d/cn\=config.ldif ? ), le message quand je fais un start est le suivant : Starting OpenLDAP: slapd failed!
                        J'ai donc pas mis les deux lignes dans le cn=config.ldif
                        Et les résultats de start et status sont les mêmes.
                        0
                        1. Oui, il s'agit bien du fichier dans /etc/ldap/slapd.d/cn\=config.ldif.

                          Tu as quoi dans le fichier de log généré par ton annuaire ?
                          0
                          1. Les logs sont dans /var/log/syslog en théorie.
                            Si tu n'as rien ajoute ceci au fichier slapd.conf :

                            # Niveau de log
                            loglevel 0
                            0
                        2. avant de regarder, je viens de refaire les tests start et status :
                          # tail -f /var/log/syslog
                          Jan 28 16:06:35 namauth slapd[2742]: @(#) $OpenLDAP: slapd 2.4.23 (Jun 15 2011 13:31:57) $#012#011@incagijs:/home/thijs/debian/p-u/openldap-2.4.23/debian/build/servers/slapd
                          Jan 28 16:06:35 namauth slapd[2743]: hdb_db_open: database "dc=math,dc=univ-nantes,dc=prive": alock package is unstable.
                          Jan 28 16:06:35 namauth slapd[2743]: backend_startup_one (type=hdb, suffix="dc=math,dc=univ-nantes,dc=prive"): bi_db_open failed! (-1)
                          Jan 28 16:06:35 namauth slapd[2743]: slapd stopped.
                          Jan 28 16:09:01 namauth /USR/SBIN/CRON[2780]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete)
                          Jan 28 16:17:01 namauth /USR/SBIN/CRON[2890]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
                          Jan 28 16:17:54 namauth slapd[2899]: @(#) $OpenLDAP: slapd 2.4.23 (Jun 15 2011 13:31:57) $#012#011@incagijs:/home/thijs/debian/p-u/openldap-2.4.23/debian/build/servers/slapd
                          Jan 28 16:17:54 namauth slapd[2900]: hdb_db_open: database "dc=math,dc=univ-nantes,dc=prive": alock package is unstable.
                          Jan 28 16:17:54 namauth slapd[2900]: backend_startup_one (type=hdb, suffix="dc=math,dc=univ-nantes,dc=prive"): bi_db_open failed! (-1)
                          Jan 28 16:17:54 namauth slapd[2900]: slapd stopped.
                          
                          0
                          1. Pour information, je sors de mon stage à 17h, je répondrais donc que demain matin pour les posts dépassants cette heure ;)
                            0
                        3. Peux-tu me dire qui est le owner de /var/lib/ldap/* ?

                          Il faudrait lancer ta commande avec le user dédié à ton annuaire.
                          0
                          1. En fait ton problème vient du fait que le user qui lance la commande slapd n'arrive pas à accéder au fichier de base de données.
                            0
                        4. Le owner est openldap
                          Je lance quelle commande avec lui ?
                          0
                          1. Tu lance le slapd start avec ce user.

                            De plus après cela tu peux faire slaptest -f slapd.conf
                            0
                        5. openldap@namauth:~$ /etc/init.d/slapd start
                          Starting OpenLDAP: slapd failed!
                          


                          openldap@namauth:~$ /etc/init.d/slapd start
                          Starting OpenLDAP: slapd failed!
                          
                          0
                          1. Tu peux me mettre le résultat du slaptest stp.
                            0
                          2. Mauvaise manip désolé,

                            openldap@namauth:~$ slaptest -f slapd.conf
                            bash: slaptest : commande introuvable
                            0
                          3. Essaie de faire sudo which slaptest
                            Cela devrait t'indiquer le chemin de slaptest.
                            Si il ne te trouve rien, fais une sauvegarde de ton fichier slapd.conf et créé un nouveau fichier slapd.conf avec ceci à l'intérieur :

                            #######################################################################
                            # Directives globales
                            # Inclusion des schemas
                            include                     /etc/ldap/schema/core.schema
                            include                     /etc/ldap/schema/cosine.schema
                            include                     /etc/ldap/schema/nis.schema
                            include                     /etc/ldap/schema/inetorgperson.schema
                            
                            # Ou sera stocke le PID du demon
                            pidfile                     /var/run/slapd/slapd.pid
                            
                            # Liste des arguments passes au demarrage du serveur
                            argsfile                    /var/run/slapd.args
                            
                            # Niveau de log
                            loglevel                         0
                            
                            # Emplacement des modules
                            
                            # Chargement du module BDB (Berkeley DB)
                            modulepath /usr/lib/ldap
                            moduleload back_bdb
                            
                            
                            #####################################################################
                            # Declaration des options pour le premier type de backend utilise
                            # Toutes les options s'y appliquent jusqu' a la prochaine directive
                            # backend
                            #backend                    bdb
                            #####################################################################
                            #backend            <autre>
                            #####################################################################
                            
                            
                            # Declaration des options de la premiere "base" , c ' est a dire de la
                            # premiere (et unique ici) arborescence geree par notre annuaire
                            # Toutes les options s' y appliquent jusqu' a la prochaine directive
                            # database
                            database                  bdb
                            checkpoint                512 30
                            
                            # La racine de notre arborescence
                            suffix                    "dc=math,dc=univ-nantes,dc=prive"
                            
                            # Le compte administrateur de notre arborescence et son mot de passe
                            rootdn                    "cn=admin,dc=math,dc=univ-nantes,dc=prive"
                            rootpw                    "secret"
                            
                            # Ou sont stockes les fichiers BDBs de notre arborescence
                            directory                 "/var/lib/ldap"
                            
                            
                            # Options d' index
                            index                     objectClass eq
                            
                            # Sauvegarde de l ' heure a laquelle est modifiee une entree
                            lastmod                    on
                            
                            # ACLs de notre premiere arborescence :
                            # Une personne non authentifiee peut s' authentifier
                            # Une personne authentifiee peut modifier son propre mot de passe
                            # Les autres n' ont pas accès à l' attribut mot de passe
                            access to attrs=userPassword
                            		by anonymous auth
                            		by self write
                            		by * none  
                            # Tout le monde peut lire l' annuaire
                            access to *
                            	by * read
                            


                            Attention vérifie que j'ai bien renseigné ton annuaire au niveau des paramètre suffix, rootdn et rootpw.
                            0
                          4. C'est fait, je relance un start avec openldap ?
                            0
                          5. oui start avec le user openldap.

                            Tu n'as pas trouver le slaptest avec la commande sudo which slaptest ?
                            0
                        6. Un petit up de bonne heure ? :)
                          0
                          1. C'est étrange, ce matin quand je fais "service slapd start", il se lance, et dans mes log je n'ai plus d'erreur..
                            Par contre, comment savoir si mon ldap est bien sécurisé ?
                            0