2021-07-02 23:41:30 +02:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Środowisko wykorzystywane na zajęciach"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Certificat SSL dla strony: https://letsencrypt.org/\n",
"Instrukcja instalacji: https://certbot.eff.org/lets-encrypt/ubuntufocal-other\n",
"\n",
"Instalacja certyfikatu w Jenkins: https://www.vhinandrich.com/jenkins-standalone-ssl-lets-encrypt\n",
"\n",
"Ścieżka do certyfikatu, którego ma używać Jenkins może być podana w dwóch miejscach (na Ubuntu 20.04):\n",
"`/etc/default/jenkins` lub `/etc/init.d/jenkins`\n",
"Ważne, aby w końcu w zmiennej `JENKINS_ARGS` znalazły się następujące parametry:\n",
"```\n",
"--httpPort=-1\n",
"--httpsPort=8080\n",
"--httpsKeyStore=/var/lib/jenkins/jenkins.jks\n",
"--httpsKeyStorePassword=TUTAJ_HASŁO_PODANE_PRZY_KONWERSJI\"\n",
"```\n",
"albo:\n",
"```\n",
"--httpPort=-1\n",
"--httpsPort=8080\n",
"--httpsCertificate=/var/lib/jenkins/fullchain.pem\n",
"--httpsPrivateKey=/var/lib/jenkins/privkey-rsa.pem\n",
"```\n",
"W zależności od tego, do jakiego formatu przekonwertowaliśmy nasz certyfikat\n",
"\n",
"\n",
"\n",
"\n",
"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/ \n",
"\n",
"Przykładowy skrypt post (przy okazji restartuje działający na porcie 80 serwer nginx strzegący dostępu do MlFlow:\n",
"```\n",
"cd /home/tzietkiewicz/docker_mlflow_db && docker-compose start\n",
"\n",
"cd /etc/letsencrypt/live/tzietkiewicz.vm.wmi.amu.edu.pl/ && \\ \n",
"openssl pkcs12 -inkey privkey.pem -in fullchain.pem -export -out keys.pkcs12 -password HASLO_CERTYFIKATU && \\\n",
"keytool -importkeystore -srckeystore keys.pkcs12 -srcstoretype pkcs12 -destkeystore /var/lib/jenkins/jenkins.jks.new -srcstorepass HASLO_CERTYFIKATU -deststorepass HASLO_CERTYFIKATU && \\\n",
"mv /var/lib/jenkins/jenkins.jks.new /var/lib/jenkins/jenkins.jks && \\\n",
"service jenkins restart\n",
"```\n",
"`HASLO_CERTYFIKATU` może być dowolne - tutaj je generujemy, ale to samo musimy podać Jenkinsowi w `/etc/default/jenkins` lub `/etc/init.d/jenkins`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
2022-04-25 11:15:16 +02:00
"version": "3.6.9"
2021-07-02 23:41:30 +02:00
}
},
"nbformat": 4,
"nbformat_minor": 5
}