Instalace Certbot Nginx (Install Certbot Nginx)

By | 16/11/2023

Last Updated on 10/12/2023 by administrator

Instalace Nginx Certbota (Install Nginx Certbot)

Instalace Nginx Certbota (Install Nginx Certbot)

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 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 [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

Zdroj:

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

Dobrovolný dar

Ahoj čtenáři, rád bych tě poprosil aby ses zamyslel, co je vše potřeba ke vzniku článku.
Jakožto amatérský softwarový kutil musím:

1) Nejdříve vše nastudovat v cizích jazycích.
2) Vše následně prakticky vyzkoušet.
3) Svoje poznatky a zkušenosti napsat do článku který si právě přečetl v jazyku kterému rozumíš.
4) Dát článku hlavu a patu a publikovat.

Každý článek zabere několik hodin práce, za kterou mi nikdo neplatí.
Prosím zvaž, kolik času jsem ti právě ušetřil.
Pokud ti to stojí aspoň za cenu jedné kávy, tak mi ji kup.
Předem moc děkuji.

Příspěvek tak můžeš provést zasláním libovolné částky na mé číslo účtu 1558701011/3030 Nebo můžeš dar poslat kliknutím na tento odkaz Podpořit tento WEB , který tě přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu také používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

Leave a Reply

Your email address will not be published. Required fields are marked *