Dans cet article nous allons détaillé 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 repertoire /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
    • qui permet de se connecter à des serveurs distants de façon sécurisée
  • le wso2carbon.jks : /usr/wso2ei/repository/resources/security/wso2carbon.jks
    • qui est celui qui répond lorsque vous utilisez WSO2EI 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.

Mais 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 ketstore pour wso2 Enterprise Integration avec un certificat letsencrypt
#le pré-requi est que le serveur soit disponible et que le certificat soir déjà à jour pour le serveur Apache.
#saisie des variables
mydomain= www.mydomain.com #Nom de domaine
certdir=/etc/letsencrypt/live/$mydomain #l'endroit ou les certificat sont stockés par letsencrypt
keytooldir=/usr/bin #java keytool localisation in usr/bin
keystoredirwso2=/usr/wso2ei/repository/resources/security #lChemin du repertoir ou sont stockées les clefs
pwds= XXXXX#password des clefs 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.bak
cp /tmp/$mydomain.jks /tmp/$mydomain.jks.bak
cp /tmp/$mydomain.pem /tmp/$mydomain.pem.bak
cp /tmp/$mydomain.pfx /tmp/$mydomain.pfx.bak
#on arrete wso2
systemctl stop wso2ei
#onlance 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:$pwds
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/
# restart wso2 server
systemctl start wso2ei

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

  • /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  : XXXXX
    • Il ya 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 : <!– Private Key alias–>
      • <KeyAlias>www.mydomain.com</KeyAlias>
  • /usr/wso2ei/repository/conf/tomcat/catalina-server.xml
    • mette à jour les lignes
      • keystoreFile= »${carbon.home}/repository/resources/security/www.mydomain.com.jks« 
      • keystorePass= »XXXXX« 
  • /usr/wso2ei/repository/conf/sec.policy
    • mette à jour la première ligne : keystore « file:${user.dir}/repository/resources/security/www.mydomain.com.jks« , « JKS »;

Et voila vous redémarrer en core une fois votre serveur et hop le tour est joué!

Attention les certificats de Let’sEncrypt ne sont valable que 3 mois. pensez bien à rejouer cette procédure réguliérement.

 

Partager ce post :