Výukový program krok za krokem, jak pomocí certbota Let’s Encrypt získat bezplatný certifikát SSL a jak jej automaticky obnovit.
Let’s Encrypt je především open source a je zcela zdarma. Umožňuje komukoli nainstalovat důvěryhodný certifikát SSL na své webové stránky a těžit z rozšířeného zabezpečení, které poskytuje šifrované připojení. Na rozdíl od certifikátu SSL s vlastním podpisem je certifikát Let’s Encrypt rozpoznán jako plně ověřený a v adresním řádku moderních webových prohlížečů zobrazuje ikonu visacího zámku.
Jak funguje Let's Encrypt
Před vydáním certifikátu Let's Encrypt ověří vlastnictví vaší domény. Klient Let’s Encrypt běžící na vašem hostiteli vytvoří dočasný soubor (token) s požadovanými informacemi. Ověřovací server poté odešle požadavek HTTP na načtení souboru a ověří token, který ověří, že záznam DNS pro vaši doménu se převádí na server, na kterém běží klient Let’s Encrypt. Níže uvedené příkazy proto musí být provedeny na serveru, který bude obsluhovat vaši doménu, pro kterou certifikát vydáváte.
1. Instalace certbot
Let’s Encrypt má automatický instalační program s názvem certbot
. Prvním krokem k použití Let’s Encrypt k získání certifikátu SSL je jeho instalace na váš server.
Ubuntu:
sudo apt install certbot python3-certbot-nginx
Debian:
sudo apt install certbot
CentOS:
sudo yum install epel-release
sudo yum install certbot-nginx
2. Získání certifikátů Let’s Encrypt
Důležité! Před vydáním bezplatného certifikátu SSL Let's Encrypt musíte zastavit službu svého webového serveru. V opačném případě se zobrazí následující chyba:
Problem binding to port 80: Could not bind to IPv4 or IPv6
Pokud používáte Nginx, spusťte:
sudo systemctl stop nginx
Nyní můžeme přejít ke generování bezplatného SSL certifikátu Let’s Encrypt:
sudo certbot certonly --standalone --preferred-challenges http -d my-domain.com
Volba -d má název domény. Můžete použít více -d
možnosti v jediném příkazu. Například:
sudo certbot certonly --standalone --preferred-challenges http -d my-domain.com -d www.my-domain.com
Pokud spouštíte certbot
poprvé , budete vyzváni k zadání e-mailové adresy a souhlasu s podmínkami služby. Poté certbot
bude komunikovat se serverem Let’s Encrypt a poté spustí výzvu k ověření, že ovládáte doménu, pro kterou certifikát požadujete.
Pokud se to podaří, certbot
se zakončí zprávou, že proces byl úspěšný a kde jsou vaše certifikáty uloženy.
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/my-domain.com/fullchain.pem. Your cert will
expire on 2022-08-08. To obtain a new or tweaked version of this
certificate in the future, simply run certbot again with the
"certonly" option. To non-interactively renew all of your
certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- 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
3. Ověřte certifikáty
Seznam vašich certifikátů uložených v /etc/letsencrypt/live/my-domain.com
adresář.
ls -l /etc/letsencrypt/live/my-domain.com/
total 4
-rw-r--r-- 1 root root 692 Mar 10 08:24 README
lrwxrwxrwx 1 root root 37 Mar 10 08:24 cert.pem -> ../../archive/my-domain.com/cert1.pem
lrwxrwxrwx 1 root root 38 Mar 10 08:24 chain.pem -> ../../archive/my-domain.com/chain1.pem
lrwxrwxrwx 1 root root 42 Mar 10 08:24 fullchain.pem -> ../../archive/my-domain.com/fullchain1.pem
lrwxrwxrwx 1 root root 40 Mar 10 08:24 privkey.pem -> ../../archive/my-domain.com/privkey1.pem
4. Upravte konfiguraci webového serveru
Aby váš webový server používal bezplatný SSL certifikát Let’s Encrypt, musíte je specifikovat v jeho konfiguraci. Pokud například používáte Nginx, musíte do konfiguračního souboru domény přidat následující blok /etc/nginx/sites-enabled/my-domain.conf
server {
listen 443;
server_name my-domain.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/my-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/my-domain.com/privkey.pem;
}
A je to. Všechny věci jsou nastaveny a hotovo. Nyní stačí spustit váš webový server:
sudo systemctl start nginx
Nakonec můžete zkontrolovat, zda je váš web nyní chráněn SSL. Stačí otevřít webovou stránku v prohlížeči a zkontrolovat, zda je k dispozici ikona visacího zámku.
5. Automaticky obnovte certifikáty Let’s Encrypt
Certifikáty jsou platné po dobu 90 dnů. Mohou být obnoveny 30 dní před vypršením platnosti. Zde přidáme úlohu cron, která je automaticky obnoví.
Nejprve tedy otevřete soubor crontab:
sudo crontab -e
poté přidejte certbot
příkaz ke spuštění týdně:
@weekly certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx" --renew-hook "systemctl reload nginx" --quiet
Závěr
V tomto tutoriálu jsme viděli, jak nainstalovat bezplatný certifikát SSL od Let’s Encrypt za účelem zabezpečení webu. Kromě toho můžete navštívit oficiální web Let’s Encrypt, kde najdete další informace a podrobnosti.