===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]]