Raspberry Pi jako webserver - HTTPS a Let's Encrypt

Jak na Raspberry Pi zprovoznit HTTPS a jak nainstalovat a použít certifikát vygenerovaný Let's Encrypt?

Nejprve musíme povolit mod ssl.
sudo a2enmod ssl
Dalším krokem je vytvoření symlinku na do adresáře /etc/apache2/sites-enabled. Tento symlink musí ukazovat na soubor /etc/apache2/sites-available/default-ssl.conf
sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf
Do souboru /etc/apache2/sites-available/default-ssl.conf pak doplníme cesty k certifikátům.
SSLCertificateFile /etc/apache2/ssl/server.crt SSLCertificateKeyFile /etc/apache2/ssl/server.key
Pokud máme všechno připravené je potřeba restartovat apache server.
sudo apachectl restart

Self - Signed certifikát

Pro HTTPS je ale nutný certikát. Nejjednoduší možností je tzv. self-signed certifikát, neboli certifikát podepsaný sám sebou. K jeho vygenerování je potřeba mít nainstalovaný OpenSSL.

Vygenerování certifikátu se provádí příkazem
sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -out /etc/apache2/ssl/server.crt -keyout /etc/apache2/ssl/server.key OpenSSL vygeneruje oba soubory server.crt a server.key, které jsme dříve zapisovali do souboru default-ssl.conf.

Pozor ale na to, že self-signed certifikáty již moderní prohlížeče nepovažují za bezpečné a proto je nutné přidávat bezpečnostní výjimky.

Le logo wide

Let's Encrypt

Řešením problému se self-signed certifikátem je použití certifikační autority Let's Encrypt. Tato autorita umožňuje zdarma vygenerovat certifikát pro HTTPS a zjednodušuje jeho nasazení. Cerifikáty jsou platné jen 3 měsíce, ale je možné je jednoduše obnovovat.

K získání a nasazení certifikátu slouží program certbot.
Stažení a příprava pragramu certbot se provádí příkazy
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

Po úspěšném stažení programu je možné ho spustit příkazem ./certbot-auto
Po spuštění, si certbot donačte všechny potřebné závislosti a spustí generování certifikátu. Vzhledem k tomu, že máme již nainstalovaný apache server je nejlepší možností použít příkaz
./certbot-auto --apache
Tento příkaz provede vygenerování certifikátu a jeho automatické nasazení do apache serveru. Není tedy potom nutné již v konfiguraci apache nic měnit. Jen opět restartovat apache.
sudo apachectl restart
Výhodou využití Let's Encrypt je, že ze Vás vyřeší i vypnutí již nebezpečných protokolů SSL v2 a SSL v3 a další bezpečnostní nastavení.

Návod s dalšími podrobnostmi naleznete na stránce https://certbot.eff.org/#debianother-apache.

Lets_encrypt_vysledek

Kvalitu HTTPS je možné otestovat na stránkách SSL Labs. např. https://www.ssllabs.com/ssltest/analyze.html?d=root.cz

Obnovení certifikátu Let's Encrypt

Jednou za 3 měsíce dorazí e-mail s upozorněním na to, že je potřeba obnovit certifikát (prodloužit platnost). Obnovu provedeme spuštěním příkazů:
sudo ./certbot-auto renew --dry-run
sudo ./certbot-auto renew

První příkaz vyzkouší obnovení "na nečisto". Během tohoto pokusu se mi zatím pokaždé zaktualizoval program certbot :-), a jednou ze dvou pokusů aktualizace spadla. Takže se dry-run vyplatí.

Druhý příkaz již provede reálné obnovení certifikátu.

Po úspěšné obnově můžeme opět otestovat kvalitu HTTPS.

Raspberry Pi, Webserver, Lets Encrypt, HTTPS

- (11. 7. 2017)
Kája z Norska
Kája z Norska

Jsem programátor, horolezec a tak trochu FlexiBee fanatik :-).
Na CharlieBlogu sepisuji své nápady a poznatky už od roku 2006.