Potřebuji odsouhlasit používání cookies. Když tyto stránky používáte, vyjadřujete souhlas.

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?


  Načítím reklamu ...

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.

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 Certbota v oddíle debain other.

Kvalitu HTTPS je možné otestovat na stránkách SSL Labs. např. SSL Labs test 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.

Aktualizace 11. 4. 2019 - Nefunkční certbot-auto

Při pokusu o obnovu certifikátu přestal fungovat certbot-auto.
THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them.
    pycparser==2.19 from https://www.piwheels.org/simple/pycparser/pycparser-2.19-py2.py3-none-any.whl#sha256=344870c533812cb119c5475b5aed033ec546118711338ff9b2b78e67098d64e7 (from -r /tmp/tmp.T7h8YKzqsl/letsencrypt-auto-requirements.txt (line 105)):
    Expected sha256 a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3
    Got             344870c533812cb119c5475b5aed033ec546118711338ff9b2b78e67098d64e7
=====================================================

Certbot has problem setting up the virtual environment.

We were not be able to guess the right solution from your pip output.

Consult https://certbot.eff.org/docs/install.html#problems-with-python-virtual-environment for possible solutions.
You may also find some support resources at https://certbot.eff.org/support/ .

Řešení jsem nalezl na fóru let's encrypt.

sudo apt-get update
sudo apt-get install certbot
sudo apt-get install python-certbot-apache
sudo certbot renew


Dokumentace k certbotu pro debian stretch: https://certbot.eff.org/lets-encrypt/debianstretch-other

Raspberry Pi, Webserver, Lets Encrypt, HTTPS

- (12. 4. 2019)

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

Powered by CharlieBlog Engine v2.3 - Login