Na domácím serveru používám velké množství subdomén, z nichž každá má svůj vlastní certifikát. Samozřejmě, pokud předem víte, které subdomény budete používat, můžete je vložit do jednoho společného certifikátu. Já však subdomény přidával postupně podle potřeb, takže každá má svůj vlastní certifikát.
Let’s Encrypt
Let’s Encrypt je veřejná certifikační autorita, která zdarma poskytuje certifikáty typu Domain Validation (DV) pro šifrování protokolu TLS. Tyto certifikáty umožňují bezpečnou komunikaci mezi klientem a serverem, například pomocí protokolu HTTPS.
Instalace balíčků
Pro instalaci potřebných nástrojů na Debianu nebo Ubuntu použijte:
sudo apt -y install openssl python3-certbot-apache certbot
Aktualizace certbot
Certbot by měl být pravidelně aktualizován, aby fungoval správně s nejnovějšími změnami na straně Let’s Encrypt. Pokud jste certbot instalovali přes balíčkovací systém, aktualizujte jej tímto příkazem:
sudo apt update && sudo apt upgrade certbot
Pokud je certbot instalován přes Python balíčky, aktualizujte ho takto:
sudo /opt/certbot/bin/pip install --upgrade certbot
Generování certifikátu
Certifikát pro váš server lze vygenerovat několika způsoby v závislosti na použitém webovém serveru.
Apache
certbot --apache
Nginx
certbot --nginx
Samostatný certifikát (standalone)
Používá se, pokud server nevyužívá Apache ani Nginx, například pro aplikace běžící na jiném serveru:
certbot --standalone
Certifikát pouze pro vybranou doménu
V případě, že chceme generovat certifikát pouze pro vybranou doménu
certbot --apache -d subdomain.example.com
Certifikáty jsou poté uloženy ve složce
/etc/letsencrypt/live/example.com/
Informace se ukládají do Log souboru
sudo tail /var/log/syslog
Testování generování certifikátu
Pokud máte problémy s generováním certifikátu a chcete otestovat proces bez skutečné žádosti, použijte argument --dry-run
. Tento příkaz je ideální pro ladění konfigurace:
certbot --apache --dry-run
Informace o generování certifikátu
Detailní informace o průběhu certifikace najdete v log souboru:
sudo tail /var/log/syslog
Omezení Let’s Encrypt
Pokud se pokusíte generovat certifikát neúspěšně více než 5krát během jedné hodiny, server Let’s Encrypt dočasně zablokuje další žádosti. Argument --dry-run
je proto užitečný při testování.
Obnovení certifikátu
Let’s Encrypt certifikáty jsou platné pouze 90 dní. Automatické obnovení lze nastavit pomocí příkazu s argumentem renew
:
certbot renew
Pro konkrétní doménu a server použijte například:
certbot --apache --renew
Automatické obnovení
Je vhodné pravidelně kontrolovat automatické obnovování certifikátů, například pomocí cron úlohy.
0 3 * * * certbot renew --quiet
Tento příkaz spustí automatickou obnovu certifikátů každý den ve 3 hodiny ráno, bez výstupu do konzole.