Jenkins : comment passer de http à https facilement

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 ^^