J'essaie en vain d'utiliser une authentification...

cancel
Showing results for 
Search instead for 
Did you mean: 
mikael
Member II

J'essaie en vain d'utiliser une authentification...

Bonjour,

J'essaie en vain d'utiliser une authentification ldap avec ssl.
- alfresco 1.3.0
- jdk 1.5.0.7
- serveur ldap fedora Directory Server avec certificat autosigné

Ce que j'ai fait
- testé la connexion en ldap sans ssl : c'est OK

- pour la configuration avec ssl :
- récupéré le certificat dans un fichier avec la commande :
openssl s_client -showcerts -connect "serveur:636" /etc/ssl/certs/serveur.pem
puis importé le certificat dans keystore de java :
/opt/jre1.5.0_07/bin/keytool -import -file /etc/ssl/certs/serveur.pem
Cela ne suffit pas et la connexion echoue tout de même.

Sur le serveur LDAP, voici ce que j'obtiens dans les logs :
[08/Jul/2006:19:03:53 +0200] conn=9860 fd=130 slot=130 SSL connection from ip_alfresco to ip_servldap
[08/Jul/2006:19:03:53 +0200] conn=9860 op=-1 fd=130 closed - SSL peer had some unspecified issue with the certificate it received.
Auriez vous une idée de ce qu'il me faut faire ?
Merci d'avance,

Mikael
2 Replies
cblandin
Member II

Re: J'essaie en vain d'utiliser une authentification...

Tu as précisé dans le fichier "ldap-authentication-context.xml" :

   <bean id="ldapInitialDirContextFactory" class="org.alfresco.repo.security.authentication.ldap.LDAPInitialDirContextFactoryImpl">
      <property name="initialDirContextEnvironment">
         <map>
            <entry key="java.naming.security.protocol">
               <value>ssl</value>
            </entry>
jey_7951
Member II

Re: J'essaie en vain d'utiliser une authentification...

Bonjour,

Je déterre ce vieux sujet car j’ai passé les deux derniers jours à essayer de mettre en place l’authentification LDAP en utilisant le cryptage SSL.
Et je dois avouer que cela n’a pas été de tout repos.

Je vais donc donné ici un résumé de tout ce que j’ai pue apprendre pendant ces deux jours en espérant que cela soit utile à quelqu’un.

Voici d’abord le détail de ma configuration (pour lever toutes ambiguïtés) : Alfresco 2.0, en version bundle avec Tomcat, installé sous Windows XP.

Le protocole SSL repose sur l’utilisation de certificats. Lors de la connexion sécurisé à un site web, votre navigateur vous demande si vous voulez accepter ou non ce certificat. Dans le cas d’Alfresco, le serveur d’application ne dispose pas d’interface graphique pour effectuer cette opération.

Il faut donc récupérer le certificat de l’annuaire, et le spécifier comme certificat de confiance à Tomcat pour qu’il puisse l’utiliser.

1. Commençons par récupérer le certificat : pour ma part j’ai utilisé l’utilitaire openSSL, via la commande :
openSSL> s_client –connect serveur_url Smiley Tongueort -showcerts
Cette commande vous retourne le certificat du serveur.

Il faut stocker ce certificat dans un fichier, par exemple temp.cer

2. Dans mon cas le certificat était en fait composé de deux certificats, dont un seul, encodé en x.509 m’intéressait, car compris par java. Si vous êtes dans le même cas le certificat x.509 est généralement le deuxième.

Il faut donc extraire ce certificat du fichier et le placé dans un nouveau fichier, par exemple mon_cert.cer.
Un certificat est de la forme :
—–BEGIN CERTIFICATE—–
***
***
***
—–END CERTIFICATE—–
3. Nous allons maintenant ajouter ce certificat au trousseau de clé de java. Pour cela nous allons utiliser l’outil keytool de la manière suivante :
%JAVA_HOME/bin/keytool.exe -import -file mon_cert.cer
Par défaut le trousseau de clé ce trouve dans le fichier cSmiley Very Happyocument and Settingsuser_name.keystore.

Vous pouvez toujours en créer un nouveau (je vous laisse chercher la commande :-p) et placé le certificat dans ce nouveau trousseau en ajoutant l’argument –keystore avec le chemin du nouveau trousseau.

4. Nous devons maintenant signaler à Tomcat qu’il peut utiliser ce trousseau comme un trousseau de confiance.
Pour cela nous allons devoir ajouter des arguments au fichier catalina.bat en ajoutant la ligne suivante :
set CATALINA_OPTS=-Djavax.net.ssl.trustStore=chemintrouceau -Djavax.net.ssl.trustStorePassword=***
Si vous utilisez le trousseau java par défaut (.keystore), la valeur du mot de passe est « changeit » (sans les guillemets évidement).

4. La dernière étape consiste à modifier le fichier ldap-authentication-context.xml.
Voici mon fichier après modification :
<beans>

    <bean id="authenticationComponent" class="org.alfresco.repo.security.authentication.ldap.LDAPAuthenticationComponentImpl">
        <property name="LDAPInitialDirContextFactory">
            <ref bean="ldapInitialDirContextFactory"/>
        </property>
        <property name="userNameFormat">
            <value>cn=%s,ou=**,ou=**,o=**</value>
        </property>
    </bean>
    <bean id="ldapInitialDirContextFactory" class="org.alfresco.repo.security.authentication.ldap.LDAPInitialDirContextFactoryImpl">
        <property name="initialDirContextEnvironment">
            <map>
            <entry key="java.naming.security.protocol">
                    <value>ssl</value>
                </entry>
                <entry key="java.naming.factory.initial">
                    <value>com.sun.jndi.ldap.LdapCtxFactory</value>
                </entry>
                <entry key="java.naming.provider.url">
                    <value>ldap://**.**.**:636</value>
                </entry>
                <entry key="java.naming.security.authentication">
                    <value>simple</value>
                </entry>
                <entry key="java.naming.security.principal">
                    <value>**</value>
                </entry>
                <entry key="java.naming.security.credentials">
                    <value>**</value>
                </entry>
            </map>
        </property>
    </bean>
   
</beans>
Voila votre authentification via LDAP avec SSL devrait désormais être pleinement fonctionnelle.

J’espère que ces quelques lignes auront pue vous aider.

Cordialement,
Jey.