Ajouter un certificat pour les connexions SSL Java
Symptôme
Section titled “Symptôme”Dans le cas par exemple d’une connexion en LDAPS (LDAP via SSL) on a de bonne chance de se prendre ce genre d’erreur :
Note que c’est la même pour les accès à des Web-Service en HTTPS via Axis
Explication
Section titled “Explication”Cette erreur vient du fait que le client n’accepte pas le certificat du serveur. Les histoires des certificats sont manifestement un poil compliqué mais bon, grosso modo, il faut ajouter le certif du serveur à la politique sécurité du client.
Sachant qu’on parle du JRE utilisé par le serveur JBoss !
Solution 1
Section titled “Solution 1”Solution “manuelle”, testé chez La Poste et GMC. Les exemples donner sont sous Linux mais ça fonctionne de la même façon sous Windows (j’ai testé). La commande keytool est dans les binaire de java. Sous Windows elle est peut-être pas dans le classpath.
En tant que ”root”, exécuter la commande :
Attention le chemin de le JRE est pas toujours le même ! Sous linux pour le connaître facilement taper:
C’est évident mais on sait jamais, s’il y a plusieurs JRE sur le serveur, il faut exécuter sur celle qu’utilise JBoss !!
La commande keytool devrait donner un truc du genre, le mot de passe est changeit
Après les appels https sur le serveur dont vous venez d’enregistrer le certificat devrait passer tout seul :p
Solution 2
Section titled “Solution 2”Donc le truc à faire c’est d’aller récupérer la classe InstallCert.java de la compiler puis de l’exécuter avec en
paramètre le serveur que vous voulez accéder en SSL :
En gros, on compile et on execute. Ca va créer un ~KeyStore dans “jssecacerts” et y placer le certificat de votre serveur. Après, pour que le client appelé depuis Cameleon soit capable de retrouver ce certificat, il faut le placer dans le ~KeyStore par défaut de la JRE utilisé par le serveur Cameleon.
Je vous invite vivement à vérifier le ~JAVA_HOME dans le .bat ou .sh de lancement de JBoss. Une fois que vous êtes sur du JAVA_HOME, le ~KeyStore par défaut est dans ~JAVA_HOME/lib/security. Vous y recopiez le contenu de “jssecacerts”.
On redémarre le JBoss et hop ça fonctionne normalement !
Par ordre d’intérêt :