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).
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
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!"
chmod +x /usr/local/bin/deploy_cert.sh ln -s /usr/local/bin/deploy_cert.sh /etc/letsencrypt/renewal-hooks/deploy/deploy_cert
Le fichier server.xml doit contenir :
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="/var/lib/tomcat9/ssl/domain.tld.jks" certificateKeystorePassword="123456" type="RSA" /> </SSLHostConfig> </Connector>
Pour tester le renouvellement manuellement :
Test à blanc
certbot renew --dry-run
Renouvellement forcé
certbot certonly --force-renewal -d votre.domaine.com
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
Erreur de permissions : Vérifier les droits utilisateur tomcatErreur SSH : Vérifier la configuration SSH et les clésTomcat ne démarre pas : Vérifier les logs avec journalctl -u tomcat9Certificat non renouvelé : Vérifier les logs Certbotkeytool -list -v -keystore keystore.jks
openssl x509 -in fullchain.pem -text -noout