Install Certbot Nginx (Instalace Certbot Nginx)

By | 26/08/2024

Last Updated on 16/02/2025 by administrator

Install Certbot Nginx (Instalace Certbot Nginx)

Install Certbot Nginx (Instalace Certbot Nginx)

Motivace:

Návod popisuje, jak nainstalovat Certbot, což je open-source nástroj, který slouží k automatizaci procesu získání, obnovy a správy SSL/TLS certifikátů pro webové servery.

Ten získává pravidelně certifikát z certifikační autority Let’s Encrypt, jelikož certifikáty zadarmo poskytované jen na devadesát dní.

OS:

Implementace Install Certbot Nginx (Instalace Certbot Nginx) byla prováděna na Ubuntu 22.04 LTS.

Prerekvizita:

Tento článek je navázáním na článek Nginx – Konfigurace Virtualhostů (Configure Nginx Virtual Hosts):

Nginx – Konfigurace Virtualhostů (Configure Nginx Virtual Hosts)

Čili je předpokládáno, že webové stránky již na Nginx běží.

Implementace – Install Certbot Nginx [1]:

Certbota je možné nainstalovat buď přes snap, nebo obyčejně přes příkaz apt. Níže budou uvedeny obě varianty.

Pozn. Bylo odzkoušeno že instalace přes snap nefungovala na LXC kontejnerech Proxmox. I přesto, že byl LXC kontejner privilegiovaný, zafungovala pouze varianta 2.

Varianta 1 – Instalace Certbota přes snap:

Aktualizace seznamu balíčků z repozitářů:

sudo apt update

Pro instalaci Certbota je doporučené použít snap místo apt. Snap je systém balíčků a nasazení softwaru vyvíjený společnosti Canonical. Výhodou je, že funguje na celé řadě linuxových distribucích navíc jsou instalace přes Snap izolované od zbytku systému, takže neovlivňují aplikace a nemají konflikty s jinými verzemi knihoven.

sudo apt install snapd

Příkaz níže obsahuje základní knihovny a prostředky, které jsou potřebné pro běh ostatních snaps na systému:

sudo snap install core

Příkaz níže slouží k aktualizaci core na nejnovější verzi:

sudo snap refresh core

Pokud byl již použitý certbot, měl by být odstraněn:

sudo apt remove certbot

Příkaz provede instalaci Certbota přes snap:

sudo snap install --classic certbot

Vytvořit symbolický link a zkopírovat certbot ze složky /snap/bin/ do /usr/bin/ složky, a tak je možné jej spustit pouhým zadáním certbot:

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Varianta 2 – Instalace Certbota přes apt:

Aktualizace seznamu balíčků z repozitářů:

sudo apt update

Instalace certbota a balíčku python3-certbot-nginx, který je specifický pro integraci Certbotu s webovým serverem Nginx:

sudo apt install certbot python3-certbot-nginx

2. Otevření webových portů na firewallu

Před stažením certifikátu je nutné aby měl webový server veřejnou IP adresu. Tuto veřejnou IP adresu je potřeba namapovat k webovému serveru. To se nejčastěji provádí na routeru přes port forwarding (přesměrování portů), kde stačí povolit port TCP/80, což slouží pro stažení certifikátu a TCP/443 pro šifrovaný přenos k webovému serveru. Každý router má ve svém nastavení port forwarding jinde. Např. TP-Link má tuto funkci pod Forwarding > Virtual Servers. Obecný průvodce pro několik routerů, kde nastavit port forwarding je možné najít zde: https://www.noip.com/support/knowledgebase/general-port-forwarding-guide/

3. Získání SSL certifikátu:

Před spuštěním příkazu je nutné aby bylo doménové jméno namapované k Vaši veřejné IP adrese, jinak nedojde ke stáhnutí certifikátu.

V návaznosti z článku Nginx – Konfigurace Virtualhostů (Configure Nginx Virtual Hosts), bude použito doménové jméno mujweb1.mooo.com:

sudo certbot --nginx -d mujweb1.mooo.com -d www.mujweb1.mooo.com

Pozn. V dnešní době je trendem upřednostňovat krátké a čisté URL adresy bez zbytečných pod domén, je možné že Vaše doménové jméno mujweb1.mooo.com  již nemá pod doménu www.mujweb1.mooo.com. V tomto případě stačí aplikovat příkaz sudo certbot –nginx -d mujweb1.mooo.com

Výstup příkazu sudo certbot –nginx -d mujweb1.mooo.com ukazuje, že certifikát pro doménové jméno mujweb1.mooo.com byl úspěšně vygenerován. Z výpisu jde také vidět, že klíč a certifikát byl uložen do složky /etc/letsencrypt/live/ a certifikát vyprší 14.2.2024.

Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): vas-email@domena.cz

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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: Y
Account registered.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for mujweb1.mooo.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/mujweb1.mooo.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/mujweb1.mooo.com/privkey.pem
This certificate expires on 2024-02-14.
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 mujweb1.mooo.com to /etc/nginx/sites-enabled/mujweb1.mooo.com
Congratulations! You have successfully enabled HTTPS on https://mujweb1.mooo.com

Nyní by měly webové stránky běžet pod https://mujweb1.mooo.com

Certbot dokonce zajistí přesměrování doménového jména z HTTP na HTTPS.

Pokud server použivá koncept virtuhostů pod Nginx, je možné provést stažení certifikátu pro všechna doménová jména příkazem níže:

sudo certbot --nginx

3. Ověření služby certbot:

Časovač se spustí dvakrát denně a automaticky obnoví jakýkoli certifikát, třicet dnů před vypršením platnosti.

Varianta 1 – snap:

sudo systemctl status snap.certbot.renew.service

Výpis příkazu sudo systemctl status snap.certbot.renew.service:

○ snap.certbot.renew.service - Service for snap application certbot.renew
     Loaded: loaded (/etc/systemd/system/snap.certbot.renew.service; static)
     Active: inactive (dead) since Wed 2023-11-08 13:57:12 CET; 9h ago
TriggeredBy: ● snap.certbot.renew.timer
    Process: 6678 ExecStart=/usr/bin/snap run --timer=00:00~24:00/2 certbot.renew (code=exited, status=0/SUCCESS)
   Main PID: 6678 (code=exited, status=0/SUCCESS)
        CPU: 291ms

Nov 08 13:57:11 webserver systemd[1]: Starting Service for snap application certbot.renew...
Nov 08 13:57:12 webserver systemd[1]: snap.certbot.renew.service: Deactivated successfully.
Nov 08 13:57:12 webserver systemd[1]: Finished Service for snap application certbot.renew.

Varianta 2 – certbot:

service certbot status

Výpis příkazu service certbot status:

* certbot.service - Certbot
     Loaded: loaded (/lib/systemd/system/certbot.service; static)
     Active: inactive (dead)
TriggeredBy: * certbot.timer
       Docs: file:///usr/share/doc/python-certbot-doc/html/index.html
             https://certbot.eff.org/docs

4. Ověření automatického obnovení certifikátu:

Aby se ověřilo, zda automatické obnovení funguje, je možné spustit simulaci použitím příkazu níže:

sudo certbot renew --dry-run

Výstup příkazu sudo certbot renew –dry-run ukazuje, že simulace automatické obnovy proběhla úspěšně:

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/mujweb1.mooo.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for mujweb1.mooo.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
  /etc/letsencrypt/live/mujweb1.mooo.com/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

5. Do kdy platí certifikát?

To se dá ověřit pomocí příkazu níže pro doménové jméno mujweb1.mooo.com:

openssl x509 -enddate -noout -in /etc/letsencrypt/live/mujweb1.mooo.com/fullchain.pem

Věřím, že článek Install Certbot Nginx pomohl.

Zdroj:

[1] https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-22-04

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *