3.2 KiB
Środowisko wykorzystywane na zajęciach
Certificat SSL dla strony: https://letsencrypt.org/ Instrukcja instalacji: https://certbot.eff.org/lets-encrypt/ubuntufocal-other
Instalacja certyfikatu w Jenkins: https://www.vhinandrich.com/jenkins-standalone-ssl-lets-encrypt
Ścieżka do certyfikatu, którego ma używać Jenkins może być podana w dwóch miejscach (na Ubuntu 20.04):
/etc/default/jenkins
lub /etc/init.d/jenkins
Ważne, aby w końcu w zmiennej JENKINS_ARGS
znalazły się następujące parametry:
--httpPort=-1
--httpsPort=8080
--httpsKeyStore=/var/lib/jenkins/jenkins.jks
--httpsKeyStorePassword=TUTAJ_HASŁO_PODANE_PRZY_KONWERSJI"
albo:
--httpPort=-1
--httpsPort=8080
--httpsCertificate=/var/lib/jenkins/fullchain.pem
--httpsPrivateKey=/var/lib/jenkins/privkey-rsa.pem
W zależności od tego, do jakiego formatu przekonwertowaliśmy nasz certyfikat
Po 3 miesiącach certyfikat wygasa. Jeśli narzędzie certbot zostało poprawnie skonfigurowane,to powinno automatycznie odświeżać certyfikat. Niestety nie jest to certyfikat bezpośrednio używany przez Jenkins (ten wymaga konwersji do formatu *.pem
albo *.jks
). Dlatego przed wygaśnięciem certyfikatu musimy ręcznie dokonać konwersji (patrz https://www.vhinandrich.com/jenkins-standalone-ssl-lets-encrypt) albo dodać konwersję do post-hook w /etc/letsencrypt/renewal-hooks/post/
Przykładowy skrypt post (przy okazji restartuje działający na porcie 80 serwer nginx strzegący dostępu do MlFlow:
cd /home/tzietkiewicz/docker_mlflow_db && docker-compose start
cd /etc/letsencrypt/live/tzietkiewicz.vm.wmi.amu.edu.pl/ && \
openssl pkcs12 -inkey privkey.pem -in fullchain.pem -export -out keys.pkcs12 -password HASLO_CERTYFIKATU && \
keytool -importkeystore -srckeystore keys.pkcs12 -srcstoretype pkcs12 -destkeystore /var/lib/jenkins/jenkins.jks.new -srcstorepass HASLO_CERTYFIKATU -deststorepass HASLO_CERTYFIKATU && \
mv /var/lib/jenkins/jenkins.jks.new /var/lib/jenkins/jenkins.jks && \
service jenkins restart
HASLO_CERTYFIKATU
może być dowolne - tutaj je generujemy, ale to samo musimy podać Jenkinsowi w /etc/default/jenkins
lub /etc/init.d/jenkins