class: center, middle # OPSY3 ## Unixové operační systémy II. přednášky navazující na OPSY2 ### Jiří Navrátil --- ## Obsah přednášek ### webové technologie - OpenBSD httpd ### databáze - PostgreSQL ### virtualizace - OpenBSD vmd a vmm --- class: center, middle # webové technologie ### OpenBSD httpd --- ## OpenBSD httpd - HTTP server s FastCGI a podporou TLS - Součástí OpenBSD od verze 5.6 - Instalovaný jako součást operačního systému - V rámci přednášek a cvičení bude probráno a vyzkoušeno: - Konfigurace včetně TLS - Testování HTTP a HTTPS komunikace - Monitorování a údržba --- ## OpenBSD httpd - předpřipravené - nainstalovaný OpenBSD operační systém v nejaktuálnější verzi - záznamy na doménových serverech - účet s administrátorskými právy - HTTP a HTTPS komunikace povolená na firewallu --- ## OpenBSD httpd - konfigurace ### připojení na server pomocí ssh ```shell $ ssh navratil@opsy3.navratil.cz ``` ### spuštění terminálového multiplexeru ```shell $ tmux ``` --- ## OpenBSD httpd - konfigurace ### změna adresáře ```shell $ doas rsync -av /var/www/ /srv/www ``` dále smazání */var/www* a změna domovského adresáře pro uživatele *www* na */srv/www* ```shell $ doas vipw ``` ### vytvoření adresáře a webové stránky /srv/www/htdocs/OPSY3.navratil.cz/index.html ??? --- ## OpenBSD httpd - konfigurace - httpd.conf 1/4 ```shell $ cat /etc/httpd.conf ``` ```shell ext_if="egress" server turgon.navratil.cz { listen on $ext_if port 80 alias www.turgon.navratil.cz log { access "turgon.navratil.cz-access.log", error "turgon.navratil.cz-error.log" } location "/.well-known/acme-challenge/*" { root "/acme" root strip 2 } location "/*" { block return 301 "https://$SERVER_NAME$REQUEST_URI" } } ``` --- ## OpenBSD httpd - konfigurace - httpd.conf 2/4 ```shell server turgon.navratil.cz { listen on $ext_if tls port 443 alias www.turgon.navratil.cz log { access "turgon.navratil.cz-tlsaccess.log", error "turgon.navratil.cz-tlserror.log" } tls certificate "/etc/ssl/turgon.navratil.cz.crt" tls key "/etc/ssl/private/turgon.navratil.cz.key" location "/.well-known/acme-challenge/*" { root "/acme" root strip 2 } root "/htdocs/novy.navratil.cz" } ``` --- ## OpenBSD httpd - konfigurace - httpd.conf 3/4 ```shell server OPSY3.navratil.cz { listen on $ext_if port 80 alias www.OPSY3.navratil.cz log { access "OPSY3.navratil.cz-access.log", error "OPSY3.navratil.cz-error.log" } location "/.well-known/acme-challenge/*" { root "/acme" root strip 2 } location "/*" { block return 301 "https://OPSY3.navratil.cz/" } root "/htdocs/OPSY3.navratil.cz" } ``` --- ## OpenBSD httpd - konfigurace - httpd.conf 4/4 ```shell server OPSY3.navratil.cz { listen on $ext_if tls port 443 alias www.OPSY3.navratil.cz log { access "OPSY3.navratil.cz-tlsaccess.log", error "OPSY3.navratil.cz-tlserror.log" } tls certificate "/etc/ssl/turgon.navratil.cz.crt" tls key "/etc/ssl/private/turgon.navratil.cz.key" root "/htdocs/OPSY3.navratil.cz" } ``` --- ## OpenBSD httpd - konfigurace - acme-client.conf 1/2 ```shell $ cat /etc/acme-client.conf authority letsencrypt { agreement url "https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf" api url "https://acme-v01.api.letsencrypt.org/directory" account key "/etc/acme/letsencrypt-privkey.pem" } authority letsencrypt-staging { agreement url "https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf" api url "https://acme-staging.api.letsencrypt.org/directory" account key "/etc/acme/letsencrypt-staging-privkey.pem" } ``` --- ## OpenBSD httpd - konfigurace - acme-client.conf 2/2 ```shell domain turgon.navratil.cz { alternative names {OPSY2.navratil.cz, OPSY3.navratil.cz, jiri.navratil.cz, kouc.navratil.cz} domain key "/etc/ssl/private/turgon.navratil.cz.key" domain certificate "/etc/ssl/turgon.navratil.cz.crt" domain full chain certificate "/etc/ssl/turgon.navratil.cz.fullchain.pem" sign with letsencrypt challengedir "/srv/www/acme" } ``` --- ## OpenBSD httpd - vygenerování certifikátů a testování ```shell acme-client -vAD turgon.navratil.cz httpd -n httpd -dv ``` --- ## OpenBSD httpd - trvalé spuštění ```shell rcctl start httpd rcctl enable httpd ``` --- ## OpenBSD httpd - prodloužení certifikátů ```shell $ cat /usr/bin/renew_the_certificates.sh #! /bin/sh acme-client turgon.navratil.cz if [ $? -eq 0 ] then /etc/rc.d/httpd reload fi ``` záznam do crontab ```shell 27 4 * * * /usr/bin/renew_the_certificates.sh ``` restartování web serveru ```shell rcctl reload httpd ``` --- ## OpenBSD httpd - doporučené zdroje ```shell man rcctl man httpd.conf man httpd man acme-client ``` - https://letsencrypt.org/how-it-works/