ium/IUM.Dla prowadzacego.ipynb

3.3 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