Jenkins : comment passer de http à https facilement
Vous avez installé une instance Jenkins et vous souhaiteriez avoir votre adresse en https avec un certificat Let's Encrypt et éventuellement sur un port autre que le 443 ?
Vous êtes au bon endroit.
Je ne détaillerai pas les commandes et ou path pour différentes distributions
Si vous utilisez le port 443 par défaut, cela fonctionne aussi.
Penser à faire un script qui reprendra les étapes qui suivront, pour renouveler votre certificat avant l'échéance des trois mois concernant Let's Encrypt.
Si le port 80 est utilisé par autre chose, sachez que vous aurez besoin de ce port pour générer le certificat, en effet Certbot passe par là.
Par défaut toutes les commandes sont passées sur Debian, à vous d'adapter si vous êtes sur Red Hat et ou Centos par exemple.
En ce qui me concerne je suis parti d'une Fresh Install sur laquelle je ne me suis pas encore connecté avec le Secret /var/lib/jenkins/secrets/initialAdminPassword de départ.
Ready ?
Ok, Let's the dream come true !!!
Installez Certbot
apt install python3-certbot -y
Puis, générez votre certificat
certbot certonly --standalone -d domain.com
Ou
certbot certonly --standalone -d sub.domain.com
Bien on a fait le plus facile
Maintenant il faut convertir cela en Keystore JKS
cd /etc/letsencrypt/live/domain.com/
Puis convertissez le certificat en PKCS12
N’oubliez pas de spécifier un mot de passe pour cette commande
openssl pkcs12 -inkey privkey.pem -in fullchain.pem -export -out keys.pkcs12
Puis convertissez-le en JKS
Si vous renouvelez les certificats, assurez-vous de supprimer avant le fichier /var/lib/jenkins/jenkins.jks existant.
keytool -importkeystore -srckeystore keys.pkcs12 -srcstoretype pkcs12 -destkeystore /var/lib/jenkins/jenkins.jks
Entrez les mots de passe d'exportation et d'importation et répondez "oui" si vous êtes invité à remplacer un alias existant.
Editez /etc/default/jenkins
Rechercher, normalement tout en bas
JENKINS_ARGS="--webroot=/var/cache/$NAME/war -httpPort=$HTTP_PORT"
Et commentez ou remplacez-la en n'oubliant pas de modifier httpsPort=xxxx par celui que vous souhaitez par :
JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=-1 --httpsPort=xxxx --httpsKeyStore=/var/lib/jenkins/jenkins.jks --httpsKeyStorePassword=PASSWORD_SET_ON_CONVERT_TO_JKS"
Maintenant editez /lib/systemd/system/jenkins.service
Je vous rappelle que nous sommes sous Debian 11 Bullseye.
Recherchez et modifiez le port et éventuellement décommettez les lignes :
Environment="JENKINS_HTTPS_PORT=xxx"
Environment="JENKINS_HTTPS_KEYSTORE=/var/lib/jenkins/jenkins.jks"
Environment="JENKINS_HTTPS_KEYSTORE_PASSWORD=<your-keystore-password>"
Enregistrez et :
systemctl restart jenkins.service
Une votre instance redémarrée connectez-vous dessus avec https
that's all ^^