Let’s Encrypt na Raspberry Pi

Vytisknout
ELEKTRONIKA
Zobrazení: 1667

Pokud potřebujeme na našem Raspberry Pi používat šifrovanou komunikaci (například u webového serveru) je vhodné použít zabezpečenou komunikaci mezi serverem a klientem (webovým prohlížečem) -> a to celé světe div se zadarmo! Tento článek vychází z potřeby zabezpečit šifrovaně komunikaci pro zavlažování mé zahrady se systémem OSPy.

Co je šifrovaná komunikace? https://cs.wikipedia.org/wiki/Transport_Layer_Security

Let's Encrypt je certifikační autorita. Pomocí automatizovaného procesu je vše navrženého tak, aby se odstranil složitý proces manuální tvorby, ověřování, podepisování, instalace a obnovování certifikátu. Zdarma poskytuje doménově ověřené certifikáty. https://letsencrypt.org/

Co budeme potřebovat?

Postup instalace a nastavení pro certifikační autoritu (Let’s Encrypt)


Krok 1 - Instalace Certbot

Přihlásíme se do Raspberry Pi přes SSH (například pomocí putty), provedeme aktualizaci systému a instalaci klienta Certbot.

Krok 2 - Spuštění certifikátu

Certbot musí odpovědět na kryptografickou výzvu vydanou přes API serverů Let's Encrypt API, abychom dokázali, že ovládáme naši doménu. K dosažení tohoto cíle se používají porty 80 (HTTP) nebo 443 (HTTPS).

Nyní můžeme spustit Certbot, abychom získali náš certifikát.

Volbou --standalone řekneme Certbotu, aby zvládl komunikaci pomocí vlastního vestavěného webového serveru. Volba --preferred-challenges dává Certbotu pokyn, aby používal port 80 nebo port 443. Pokud používáme port 80 --preferred-challenges http. Pro port 443 by to bylo --preferred-challenges tls-sni. Nakonec parametr -d se používá k určení názvu domény, pro kterou požadujete certifikát. Můžete přidat více možností -d a tím pokrýt více domén v jednom certifikátu.

Při spuštění příkazu budeme vyzváni k zadání e-mailové adresy a souhlasu s podmínkami služby. Poté by se nám měla zobrazit zpráva informující o tom, že proces byl úspěšný a kde jsou naše certifikáty uloženy:

pi@ospy:~ $ sudo certbot certonly --standalone --preferred-challenges http -d pepa.melemaso.cz
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for pepa.melemaso.cz
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/pepa.melemaso.cz/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/pepa.melemaso.cz/privkey.pem
   Your cert will expire on 2020-01-13. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 

Ruční generování certifikátů (z nějakého důvodu, například testování).

 

Krok 3 - Konfigurace naší aplikace

Konfigurace naší aplikace pro SSL je nad rámec tohoto článku, protože každá aplikace má odlišné požadavky a možnosti konfigurace, ale podívejme se, co pro nás Certbot stáhl. Certifikační autorita pomocí Certbotu uloží klíče do složky v mém příkladu etc/letsencrypt/live/pepa.melemaso.cz

Tato složka obsahuje klíče a certifikáty.

VAROVÁNÍ: NEMĚNÍME TYTO SOUBORY! Certbot očekává, že tyto soubory zůstanou v tomto umístění v pořádku a beze změn uživatelem.

Pro použití v systému zalévače OSPy (jeho webový server) je fullchain.pem jako "crt" soubor a privkey.pem je jako "key" soubor. V poslední verzi zálevače OSPy (od verze: 2.5.669  2019-11-07) je již cesta k certifikátům nastavena v závislosti na nastavení doménového jména (doménové jméno nastavíme v záložce "nastavení" systému OSPy).


Krok 4 - Zpracování automatických obnov certifikátů

Certifikáty jsou platné pouze po dobu devadesáti dnů. To má podnítit uživatele k automatizaci procesu obnovy certifikátů. Certbot se o to postará sám přidáním obnovovacího skriptu do souboru /etc/cron.d. Tento skript se spouští dvakrát denně a obnoví všechny certifikáty, které uplynou do třiceti dnů před vypršením platnosti.

Po obnovení certifikátů je nutné náš webový server restartovat, aby se načetly certifikáty nové. Buď provedeme restart serveru (služby) ručně (sudo service ospy restart), nebo využijeme možnosti restartovat server automaticky pomocí Certbotu. Chceme-li přidat soubor renew_hook pro automatizaci, aktualizujeme konfigurační soubor pro obnovu Certbotu. Certbot si pamatuje všechny podrobnosti o tom, jak jsme poprvé získali certifikát a po obnovení bude se stejnými možnostmi pracovat. Stačí přidat do souboru conf u certifikátu co se má provést.

Přidáme do souboru conf:

Uložíme a zavřete soubor conf a poté spustíme běh Certbotu "nanečisto" pro ujištění se, zda je syntaxe v pořádku:

Pokud nevidíme žádné chyby je všechno připraveno.

 

IPv4 versus IPv6

Můj router není nastaven pro IPv6 (směrování) provoz a při generovaní certifikátu pomocí Certbotu se mi nedařilo certifikát na svém Raspberry Pi vygenerovat. Zjistil jsem, že Certbot preferuje komunikaci přes IPv6. Řešením bylo v mém případě zakázat v Raspberry Pi použití IPv6 a ponechat pouze IPv4. Následně vše proběhlo v pořádku.

# Don't load ipv6 by default
alias net-pf-10 off
#alias ipv6 off
# added to disable ipv6
options ipv6 disable_ipv6=1
# added to prevent ipv6 driver from loading
blacklist ipv6

Raspberry Pi
OSPy
Let’s Encrypt