Openfire + certificat StartSSL ou autres

Publié le 14 janvier 2010 par Cyrillevis

(Je rappel/signal juste que openfire est un très bon serveur jabber tournant sous java)

Ceci est un mémo écrit comme à 00h45, non relu, qui ne sera pas utile à grand monde je penses, mais sait on jamais.

Je considères que vous tournez sous debian lenny et avez openfire installé, sinon il faudra adapter

Il faut tout d’abords vérifier que vous utiliser la bonne version de java qui va bien:

root@serveur:~# update-alternatives --config java

Il y a 3 alternatives fournissant « java ».

  Sélection    Alternative
-----------------------------------------------
          1    /usr/bin/gij-4.3
 +        2    /usr/lib/jvm/java-gcj/jre/bin/java
*         3    /usr/lib/jvm/java-6-sun/jre/bin/java

Afin d’utiliser java-6-sun, s’il le faut aptitude install sun-java6-jre.

Ensuite il vous faut générer un certificat via votre fournisseur de certificats, pour moi startssl.com. Un certificat class2 sera utilisé dans cette exemple.

Le problème que j’ai rencontré à été la non utilisation du keytool fourni par java-6-jre.
Je vous donne les commande a effectué pour importer dans le cas d’un startssl:

/etc/init.d/openfire stop
cd /etc/openfire/security
wget http://www.startssl.com/certs/ca.crt
wget http://www.startssl.com/certs/sub.class2.server.ca.crt
/usr/lib/jvm/java-6-sun-1.6.0.12/jre/bin/keytool -import -keystore truststore -trustcacerts -alias startcom.ca -file ca.crt

Un mot de passe vous est demandé: changeit
Puis on valide par: oui

/usr/lib/jvm/java-6-sun-1.6.0.12/jre/bin/keytool -import -keystore truststore -alias startcom.ca.sub -file sub.class2.server.ca.crt
On rentre le mot de passe: changeit

Ensuite afin de pouvoir configurer un certificat class2, il faut contourner la loi française:
On se rend sur cette page: http://java.sun.com/javase/downloads/index_jdk5.jsp pour y télécharger : Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 5.0

Le fichier jce_policy-1_5_0.zip récupéré sur le serveur, on l’unzip, puis on remplace ceux d’origine:

cp local_policy.jar /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/security/local_policy.jar
cp US_export_policy.jar /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/security/US_export_policy.jar

Ensuite afin de ne pas voir ceci pété par une mise à jour, on « divert » les fichiers:

dpkg-divert --divert /usr/share/doc/sun-java6-jre/local_policy.jar.ori --rename /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/security/local_policy.jar
dpkg-divert --divert /usr/share/doc/sun-java6-jre/US_export_policy.jar.ori  --rename /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/security/US_export_policy.jar

A nôter qu’avec ceci, si une mise à jour est disponible, il faudra la mettre à la mimine.

On redémarre ensuite openfire :

/etc/init.d/openfire start

On se rend sur la page web d’admin (port 9090) puis dans l’onglet « Paramètre du serveur », puis « Server Certificates » (en gros la page ssl-certificates.jsp)

Là, vous y supprimez les certificats présent autogénérés en cliquant sur la croix rouge.
On clique ensuite le bouton « import » en haut.

On touche au but, vous copier/coller votre mot de passe de votre certificat, vous coller la key et le certificat, on clique import, et Hop!

Vous aurez le message suivant, ignorer le:
One or more certificates are missing. Click here to generate self-signed certificates or here to import a signed certificate and its private key.

That’s done, vous pourrez relancer votre client préféré, apprécier la non demande de validation du certificat, et t’chatter en toute discretion.

ps: Je relirais à l’occaz
J’ai mis 3 jours à m’en sortir (pas a plein temps je vous rassure)
[ad]