Let's Encrypt je certifikační autorita, která nabízí jednoduchou cestu k vytvoření a instalaci TLS/SSL certifikátu. Proces se zjednodušuje použitím klienta Certbot, který automatizuje většinu, ne-li všechny, potřebné kroky.
Pro následující kroky bude potřeba:
- Ubuntu 16.04 server, sudo "non-root" uživatele a firewall.
- Doménu - např "mojedomena.cz".
- Nastavené DNS záznamy pro váš server.
- Záznam "A" s "mojedomena.cz" mířeným na veřejnou adresu vašeho serveru.
- Záznam "A" s "www.mojedomena.cz" mířeným na veřejnou adresu vašeho serveru.
- Nainstalovaný Nginx.
1. Instalace Certbot klienta
První krok k použití Let's Encrypt k vytvoření SSL certifikátu je mít nainstalovaný Certbot na vašem serveru. Certbot je velmi aktivně vyvíjen, takže balíčky které nabízí ubuntu jsou často zastaralé. Proto přidáme adresář od vývojářu kde se nachází aktuální balíčky.
Přidáme adresář
sudo add-apt-repository ppa:certbot/certbot
Poté aktualizujeme seznam balíčků.
sudo apt-get update
Nyní můžeme nainstalovat Certbot Nginx balíček
sudo apt-get install python-certbot-nginx
Certbot je nyní připavený k použití, ale ke konfiguraci SSL pro Nginx ještě potřebujeme ověřit nastavení Nginx.
2. Potvrzení nastavení Nginx
Certbot musí být schopný najít správny "server" blok pro automatické konfiguraci SSL. Přesněji certbot hledá "server_name". Náš "server" blok se nachází ve složce /etc/nginx/sites-available/mojedomena.cz
K ověření, můžeme použít editor "nano" nebo váš oblíbený textový editor.
sudo nano /etc/nginx/sites-available/mojedomena.cz
Najdeme řádek se "server_name". Mělo by to vypadat asi takhle.
server_name mojedomena.cz www.mojedomena.cz
Pokud to takhle vypadá, můžete ukončit editor a přesunout se na další krok. Pokud to takhle nevypadá, upravíme řádek podle předlohy. Poté uložíme soubor a ověříme správnost syntaxe.
sudo nginx -t
Pokud se vyskytne chyba, otevřete znova soubor v textovém editoru a zkontrolujte překlepy nebo chybějící písmenka. Když už je váš soubor v pořádku znovu načteme Nginx.
sudo systemctl reload ngi
3. Povolení HTTPS přes Firewall
Aktuální nastavení firewallu můžeme zobrazit příkazem
sudo ufw status //Výstup Status: active
Seznam dostupných profilů si můžeme zobrazit příkazem
sudo ufw app list
K povolení HTTPS provozu, potřebujeme povolit profil "Nginx Full"
sudo ufw allow 'Nginx Full'
Nyní můžeme použít certbot pro vytvoření certifikátu
4. Získání SSL Certifikátu
Certbot nabízí řadu cest jak získat SSL certifikát, přes různé pluginy. Nginx plugin se postará o aktuální konfiguraci Nginx a obnovení nastavení kdykoliv je potřeba.
sudo certbot --nginx -d mojedomena.cz -d www.mojedomena.cz
Pokud je tohle poprvé co zapínáte certbot, budete vyzván zadat e-mailovou adresu a souhlasit s podmínky použití. Poté certbot začně komunikovat s Let's Encrypt servery, následně provede serii testů k ověření domény pro kterou se certifikát vytváří. Pokud testy skončí úspěšně, certbot se zeptá jak chcete nastavit HTTPS.
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Nastavení bude aktualizováno a Nginx se znovu načte k obdržení nového nastavení. Certbot zobrazí zprávu s úspěšným vytvořením SSL Certifikátu a dalšími informacemi. Nyní váš certifikát je stažen, nainstalován a načten. Můžete zkusit načíst vaši stránku použitím "https://". Nyní by váš prohlížeč měl ukazovat že stránka je zabezpečená, nejspíš zelenou ikonou zámku.
5. Automatické obnovování certbot
SSL certifikát je platný pouze na 90 dnů. Poté ho budeme muset obnovit. Pro automatické obnovování můžeme použít službu "cron".
Otevřeme si konfigurační soubor pro "cron" příkazem
sudo crontab -e
Vybereme editor pro použití a na poslední řádek konfiguračního souboru přídáme řádek
15 3 * * * /usr/bin/certbot renew --quiet
Tento řádek nám každy den ve 3:15 obnoví certifikát.