Let’s Encrypt je certifikační autorita, která poskytuje bezplatné SSL certifikáty pro webové stránky. Nenabízí však pouze certifikáty SSL; automatizuje také vytváření, ověřování, podepisování, implementaci a obnovování certifikátů.
Let’s Encrypt je největší certifikační autorita na světě, kterou používá více než 250 milionů webů. Byl spuštěn v listopadu 2014 s cílem, aby všechny weby byly zabezpečené a využívaly HTTPS.
V současnosti Let’s Encrypt podporuje automatickou instalaci certifikátů na Apache, Nginx, Plex a Haproxy.
Zde uvidíme, jak nainstalovat Let’s Encrypt SSL Certificate pro Nginx na Debian 11.
Předpoklady
Než budete pokračovat dále, doporučuji vám nastavit instalační webový server Nginx ve vašem systému.
ČTĚTE: Jak nainstalovat LEMP Stack na Debian 11
Vytvořit virtuální hostitele
Nejprve budeme muset vytvořit virtuálního hostitele Nginx, který bude obsluhovat HTTP verzi vašeho webu.
sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf
Pro svůj web použijte níže uvedenou konfiguraci. Nezapomeňte změnit hodnoty na základě vašeho požadavku.
Sekci PHP Fast CGI můžete odebrat, pokud nepoužíváte CMS jako WordPress, Joomla atd. nebo aplikace založené na PHP.
server { server_name itzgeek.net www.itzgeek.net; root /usr/share/nginx/www.itzgeek.net/; location / { index index.html index.htm index.php; } access_log /var/log/nginx/www.itzgeek.net.access.log; error_log /var/log/nginx/www.itzgeek.net.error.log; location ~ \.php$ { include fastcgi_params; fastcgi_intercept_errors on; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
Jakmile vytvoříte konfigurační soubor virtuálního hostitele, vytvořte kořenový adresář pro uložení souborů vašeho webu.
sudo mkdir -p /usr/share/nginx/www.itzgeek.net/
Potom změňte vlastnictví a skupinu adresáře.
sudo chown -R www-data:www-data /usr/share/nginx/www.itzgeek.net/
Nakonec umístěte testovací soubor HTML do kořenového adresáře dokumentu vaší domény.
echo "This is a test site @ www.itzgeek.net" | sudo tee /usr/share/nginx/www.itzgeek.net/index.html
Nyní budete muset restartovat službu Nginx, abyste si znovu přečetli konfigurace.
sudo systemctl restart nginx
Vytvořit / aktualizovat záznam DNS
Chcete-li vygenerovat certifikát Let's Encrypt SSL pro vaši doménu, budete muset svou doménu nasměrovat na IP vašeho serveru. Přejděte tedy ke svému registrátorovi domény a vytvořte záznam A/CNAME pro svou doménu. Například níže uvedený obrázek ukazuje záznam A/CNAME pro doménu www.itzgeek.net.
Rozšíření změn DNS záznamů bude nějakou dobu trvat. Počkejte tedy několik minut až hodin, v závislosti na TTL, kterou nastavíte pro DNS záznam.
Nainstalujte Let's Encrypt SSL Certificate for Nginx
Nainstalujte Certbot
Kromě nasměrování domény na IP vašeho serveru budete také muset nainstalovat klienta Certbot ACME do vašeho systému. Klient Certbot zvládne vydání certifikátu a instalaci bez prostojů.
Certbot je nyní dostupný jako snap balíček pro operační systém Debian. Nejprve tedy nainstalujte balíček Snapd.
sudo apt update sudo apt install -y snapd
Poté aktualizujte snapd na nejnovější verzi.
sudo snap install core; sudo snap refresh core
Nakonec nainstalujte klienta Certbot pomocí příkazu snap.
sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot
Nainstalujte Let's Encrypt Certificate
Pomocí příkazu certbot vytvořte certifikát Let’s Encrypt a nakonfigurujte Nginx, aby certifikát používal.
sudo certbot --nginx
Postupujte podle interaktivní výzvy a nainstalujte certifikát.
Saving debug log to /var/log/letsencrypt/letsencrypt.log Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] << Enter Email ID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server. Do you agree? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y << Agree to Terms and Conditions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing, once your first certificate is successfully issued, to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: N << Subscriber to Newsletter Account registered. Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: itzgeek.net 2. www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1,2 << Choose Site to Install Let's Encrypt SSL Certificate Requesting a certificate for www.itzgeek.net Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/www.itzgeek.net/fullchain.pem Key is saved at: /etc/letsencrypt/live/www.itzgeek.net/privkey.pem This certificate expires on 2022-01-17. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for www.itzgeek.net to /etc/nginx/conf.d/www.itzgeek.net.conf Congratulations! You have successfully enabled HTTPS on https://www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Jakmile aktivujete HTTPS pro svou doménu, klient Certbot umístí nezbytná pravidla přepisu pro přesměrování provozu z HTTP na web HTTPS.
V mém případě to umístilo dvě pravidla pro níže uvedená přesměrování.
- http://itzgeek.net>> https://itzgeek.net
- http://www.itzgeek.net>> https://www.itzgeek.net
Jak vidíte, první přesměrování není dosaženo na www HTTPS verzi webu. Takže možná budete muset postupovat podle níže uvedené části a nastavit to.
Přesměrujte požadavky HTTP bez www na www HTTPS pomocí Nginx (volitelné)
Možná budete chtít nakonfigurovat server Nginx tak, aby přesměroval provoz z webu HTTP bez www na web WWW HTTPS, tj. http://itzgeek.net>> https://www.itzgeek.net .
sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf
Přidejte zvýrazněné přesměrování do sekce SSL.
listen 443 ssl; # managed by Certbot . . . . . . ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot if ($host = itzgeek.net) { return 301 https://www.itzgeek.net$request_uri; }
Poté restartujte službu Nginx.
sudo systemctl restart nginx
Ověřte certifikát Let's Encrypt
Certifikát Let’s Encrypt můžete ověřit na svém webu.
http://vaše-http-webové-stránkyNEBO
https://vaše-https-webové-stránkyNyní byste měli získat verzi svého webu HTTPS.
Test certifikát SSL
Na níže uvedené adrese URL otestujte svůj certifikát Let’s Encrypt SSL na případné problémy a hodnocení zabezpečení.
https://www.ssllabs.com/ssltest/analyze.html?d=www.itzgeek.netObnovení certifikátu Let's Encrypt
Certifikáty Let’s Encrypt mají platnost 90 dní a je velmi vhodné certifikáty před vypršením platnosti obnovit. Díky službě systemd, která běží dvakrát denně a automaticky obnovuje certifikáty, kterým brzy vyprší platnost.
Doporučuji však spustit níže uvedený příkaz, abyste simulovali automatické obnovení vašeho certifikátu.
sudo certbot renew --dry-run
Výstup:
Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processing /etc/letsencrypt/renewal/www.itzgeek.net.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Account registered. Simulating renewal of an existing certificate for www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations, all simulated renewals succeeded: /etc/letsencrypt/live/www.itzgeek.net/fullchain.pem (success) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Pokud výstup potvrdí, že obnovení funguje správně, automatické obnovení proběhne podle očekávání.
Závěr
To je vše. Doufám, že jste se naučili, jak nainstalovat Let’s Encrypt SSL certifikát pro Nginx na Debian 11. Podělte se o svůj názor v sekci komentářů.