Dans cet article nous allons détailler comment paramétrer WSO2EI avec Let’s Encrypt.

Je suppose que vous avez déjà votre Certificat Let’s Encrypt. Par convention, nous installons toujours WSO2EI dans le répertoire “/usr” et nous faisons systématiquement un lien symbolique afin que le dossier soit toujours “/usr/wso2ei/”. Dans WSO2, les certificats sont stockés dans des “jks”. Il y en a deux :

  • Le “client-truststore.jks” : “/usr/wso2ei/repository/resources/security/client-truststore.jks.”

Il permet de se connecter à des serveurs distants de façon sécurisée.

  • Le wso2carbon.jks : “/usr/wso2ei/repository/resources/security/wso2carbon.jks”

C’est lui qui répond lorsque vous utilisez WSO2 Enterprise Integration, notamment dans vos appels de proxys. Nous pensons qu’il est important de changer à la fois de “wso2carbon.jks” ainsi que son mot de passe.

Avant tout, nous allons créer ce nouveau “jks“.

Voici le programme “.sh” que nous utilisons :

“#!/bin/bash #author Jean-Marc Henry”

Cette procédure met à jour les keystore pour WSO2 Enterprise Integration avec un certificat Let’s Encrypt. Le pré-requis est que le serveur soit disponible et que le certificat soir déjà à jour pour le serveur Apache.

Saisie des variable “mydomain= www.mydomain.com”

Nom de domaine “certdir=/etc/letsencrypt/live/$mydomain”

L’endroit où les certificats sont stockés par Let’s Encrypt “keytooldir=/usr/bin #java keytool localisation in usr/bin”

“keystoredirwso2=/usr/wso2ei/repository/resources/security”

Chemin du répertoire ou sont stockées les clés : “pwds= XXXXX”

Password des clés de votre “jks” : “carbonpwds=wso2carbon #password du client-truststore”

On efface notre précédent certificat du client-truststore : “$keytooldir/keytool -delete -alias $mydomain -keystore $keystoredirwso2/client-truststore.jks -storepass $carbonpwds”

On peut effacer les éléments de certificat en fin de script pour plus de sécurité :

“rm /tmp/$mydomain.jks.bak” 

“rm /tmp/$mydomain.pfx.bak”

“rm /tmp/$mydomain.pem.bakcp /tmp/$mydomain.jks /tmp/$mydomain.jks.bak

cp/tmp/$mydomain.pem /tmp/$mydomain.pem.bak

cp/tmp/$mydomain.pfx /tmp/$mydomain.pfx.bak

On arrête ensuiteWSO2 : “systemctl stop wso2ei”

On lance la procédure : “cd /tmp”

“openssl pkcs12 -export -in $certdir/cert.pem -inkey $certdir/privkey.pem -name $mydomain -certfile $certdir/chain.pem -out $mydomain.pfx -password pass:$pwd

 

ls -la”“$keytooldir/keytool -importkeystore -srckeystore $mydomain.pfx -srcstoretype pkcs12 -destkeystore $mydomain.jks -deststoretype JKS -srcstorepass $pwds -deststorepass $pwds -noprompt”

ls -la”“$keytooldir/keytool -export -alias $mydomain -keystore $mydomain.jks -file $mydomain.pem -storepass $pwds -noprompt”“ls-la”“$keytooldir/keytool -import -alias $mydomain -file $mydomain.pem -keystore $keystoredirwso2/client-truststore.jks -storepass $carbonpwds -noprompt”

ls -la”“rm$keystoredirwso2/$mydomain.pfx”

“rm$keystoredirwso2/$mydomain.jks”“cp /tmp/$mydomain.pfx $keystoredirwso2/”

“cp /tmp/$mydomain.jks $keystoredirwso2/”

 

Redémarrer ensuite le serveur WSO2.

systemctl start wso2ei

Il reste maintenant à mette à jour certains fichier de configurations qui sont les suivants :

“/usr/wso2ei/repository/conf/axis2/axis2.xm”

Remplacer les informations wso2carbon.jks par www.mydomain.com.jks

Mettre à jour le mot de passe avec le mot de passe défini dans le script  : XXXXXIl y a deux emplacements dans le fichier axis.xml à changer.

“/usr/wso2ei/repository/conf/carbon.xml”

Remplacer les informations wso2carbon.jks par www.mydomain.com.jks

Mettre à jour le mot de passe avec le mot de passe défini dans le script  : XXXXX

Mettre à jour :

www.mydomain.com

“/usr/wso2ei/repository/conf/tomcat/catalina-server.xml”

Mette à jour les lignes “keystoreFile=”${carbon.home}/repository/resources/security/www.mydomain.com.jks"et keystorePass=”XXXXX

“/usr/wso2ei/repository/conf/sec.policy”

Mettre à jour la première ligne : “keystore “file:${user.dir}/repository/resources/security/www.mydomain.com.jks“, “JKS”;

Vous redémarrez ensuite une dernière fois votre serveur et hop, le tour est joué ! Attention, les certificats de Let’s Encrypt ne sont valables que 3 mois. Pensez bien à rejouer cette procédure réguliérement.