===Déploiement automatique de certificat Let's Encrypt vers Java Keystore===
== Contexte ==
Cette documentation détaille le processus d'automatisation du déploiement d'un certificat Let's Encrypt vers un Java Keystore (utilisé par Tomcat ou d'autres applications Java).
== Prérequis ==
* Un certificat Let's Encrypt généré via Certbot
* Accès root sur les deux serveurs (source et destination)
* OpenSSL et Keytool installés
* SSH configuré entre les serveurs
== Configuration SSH sans mot de passe ==
Sur le serveur source (où se trouve le certificat Let's Encrypt) :
Générer la paire de clés
ssh-keygen -t ed25519
Copier la clé vers le serveur de destination
ssh-copy-id root@serveur-destination
== Script de déploiement ==
Créer le script suivant dans /usr/local/bin/deploy_cert.sh :
#!/bin/bash
# Configuration
CERT_PATH="/etc/letsencrypt/live/domain.tld"
MDM_SERVER="domain.tld"
MDM_USER="root"
KEYSTORE_PASSWORD="123456"
REMOTE_PATH="/var/lib/tomcat9/ssl"
# Vérification des droits root
if [ "$EUID" -ne 0 ]; then
echo "Ce script doit être exécuté en tant que root"
exit 1
fi
# Création d'un dossier temporaire
TEMP_DIR=$(mktemp -d)
cd "$TEMP_DIR" || exit 1
echo "Création du keystore..."
# Création du keystore PKCS12
openssl pkcs12 -export \
-in "$CERT_PATH/fullchain.pem" \
-inkey "$CERT_PATH/privkey.pem" \
-out domain.tld.p12 \
-name tomcat \
-password pass:$KEYSTORE_PASSWORD
# Conversion en JKS
keytool -importkeystore \
-srckeystore domain.tld.p12 \
-srcstoretype PKCS12 \
-srcstorepass $KEYSTORE_PASSWORD \
-destkeystore domain.tld.jks \
-deststoretype JKS \
-deststorepass $KEYSTORE_PASSWORD
echo "Copie du keystore vers le serveur MDM..."
# Copie et configuration sur le serveur distant
scp domain.tld.jks $MDM_USER@$MDM_SERVER:$REMOTE_PATH/
ssh $MDM_USER@$MDM_SERVER "chown tomcat:tomcat $REMOTE_PATH/domain.tld.jks && chmod 600 $REMOTE_PATH/domain.tld.jks && systemctl restart tomcat9"
# Nettoyage
cd /
rm -rf "$TEMP_DIR"
echo "Déploiement terminé avec succès!"
=== Installation du script ===
chmod +x /usr/local/bin/deploy_cert.sh
ln -s /usr/local/bin/deploy_cert.sh /etc/letsencrypt/renewal-hooks/deploy/deploy_cert
== Configuration Tomcat ==
Le fichier server.xml doit contenir :
== Test manuel ==
Pour tester le renouvellement manuellement :
Test à blanc
certbot renew --dry-run
Renouvellement forcé
certbot certonly --force-renewal -d votre.domaine.com
== Vérification ==
Pour vérifier l'installation :
Vérifier le statut de Tomcat
systemctl status tomcat9
Vérifier le certificat
curl -v https://votre.domaine.com:8443
== Maintenance ==
* Le renouvellement est automatique via Certbot
* Le script s'exécute automatiquement après chaque renouvellement
* Le certificat est renouvelé environ 30 jours avant expiration
* Vérifier les logs dans /var/log/letsencrypt/ en cas de problème
== Dépannage ==
=== Problèmes courants ===
* ''Erreur de permissions'' : Vérifier les droits utilisateur tomcat
* ''Erreur SSH'' : Vérifier la configuration SSH et les clés
* ''Tomcat ne démarre pas'' : Vérifier les logs avec journalctl -u tomcat9
* ''Certificat non renouvelé'' : Vérifier les logs Certbot
=== Commandes utiles ===
* Vérifier le contenu d'un keystore :
keytool -list -v -keystore keystore.jks
* Vérifier la validité du certificat :
openssl x509 -in fullchain.pem -text -noout
[[Category:Sécurité]]
[[Category:Certificats]]
[[Category:Java]]
[[Category:Automatisation]]