Ugrás a tartalomhoz

Sütibeállítások

Típusonként válassza ki, mely sütiket engedélyezi. Választását bármikor módosíthatja a Sütibeállítások linken, amely minden oldal alján megtalálható. Adatvédelmi nyilatkozat

Szükséges

Mindig bekapcsolva

A bejelentkezéshez, a kosár megőrzéséhez és a választásai megjegyzéséhez szükségesek. Ezek mindig be vannak kapcsolva.

Milyen sütik?
  • weboke_sessie, weboke_klant, weboke_remember: a munkamenet és a bejelentkezve maradás
  • weboke_basket: a kosár
  • wkBtwIncl: az árak megjelenítése ÁFÁ-val vagy anélkül
  • wok_cookies: a sütiválasztás, 12 hónap

Méri, melyik hirdetés vezet látogatáshoz vagy rendeléshez, hogy ne fizessünk hatástalan hirdetésekért.

Milyen sütik?
  • Google Ads a Google Tag Manageren keresztül (_gcl_au, _gcl_aw), legfeljebb 90 napig
  • OpenAI Ads, hirdetések a ChatGPT-ben
  • wok_aff: melyik partnerünk ajánlására érkezett (partnerprogram), 60 nap

4,6

Ország és nyelv

Minden országnak saját oldala van, az adott ország áraival és ÁFA-jával.

Megtekintés

https a Let's Encrypt segítségével

Modul 7: Domain, webszerver és https · Olvasási idő: 12 perc

Tanulási cél: A lecke után Ön képes lesz certbottal ingyenes Let's Encrypt tanúsítványt igényelni nginx-hez, a http forgalmat https-re átirányítani, az automatikus megújítást ellenőrizni, és megoldani az igénylés leggyakoribb hibáit.

Kulcsfogalmak: tanúsítvány, tanúsítványkiadó (CA), ACME, Let's Encrypt, domainellenőrzés, HTTP-01, DNS-01, TLS-ALPN-01, certbot, megújítás, certbot renew --dry-run, érvényességi idő, ARI, rate limitek, staging, CAA, átirányítás https-re

Miért https, és mit bizonyít egy tanúsítvány

https nélkül minden titkosítatlanul halad a böngésző és a szerver között a hálózaton: jelszavak, űrlapok, sütik. Útközben bárki (egy nyilvános wifi, egy feltört router) beleolvashat vagy módosíthat valamit. A böngészők ezért a http-oldalakat „nem biztonságos” jelzéssel látják el, és bizonyos funkciók csak https-en keresztül működnek. Egy olyan jelszótárolónál, mint a Vaultwarden (9.4. lecke), a https egyenesen kötelező.

A https TLS-t használ, ehhez pedig a szerverének tanúsítványra van szüksége: egy olyan igazolásra, amelyet a böngészők által megbízhatónak tartott tanúsítványkiadó (CA) írt alá, és amely igazolja, hogy ez a kulcs ehhez a névhez tartozik. Egy hagyományos tanúsítvány csak azt bizonyítja, hogy az igénylő kezeli a domainnevet (domainellenőrzés). Arról semmit sem mond, hogy Ön kicsoda, vagy hogy megbízható-e.

A Let's Encrypt egy ingyenes CA, amely kizárólag domainellenőrzött tanúsítványokat ad ki, teljesen automatikusan, az ACME protokollon keresztül. A szerveren futó program (az ACME-kliens) igényli a tanúsítványt, bizonyítja, hogy kezeli a nevet, telepíti, és időben megújítja. Ez a lecke a certbotot, az EFF kliensét használja. A Caddy (7.4. lecke) beépített ACME-klienssel rendelkezik.

Hogyan bizonyítja, hogy Ön kezeli a nevet?

A Let's Encrypt háromféle kihívást (challenge) ismer:

KihívásHogyanPortWildcard (*.example.com)
HTTP-01egy fájl elhelyezése a http://<naam>/.well-known/acme-challenge/ alatt80nem
DNS-01egy _acme-challenge.<naam> TXT-rekord beállításanincsigen
TLS-ALPN-01egy speciális tanúsítvány bemutatása a TLS-kézfogás során443nem

Egy weboldalt kiszolgáló hagyományos VPS esetén a HTTP-01 a legegyszerűbb. Ehhez a következők szükségesek:

  • a név A (és AAAA) rekorddal a szerverére mutat (7.1. lecke);
  • a 80-as port nyitva van az egész világ felé, akkor is, ha az oldal egyébként csak https-t használ. A Let's Encrypt kizárólag a 80-as porton keresztül ellenőriz, mégpedig az internet több pontjáról; ezeket a címeket nem tudja felvenni a tűzfalába;
  • a szervere IPv4-en és IPv6-on is ugyanazt válaszolja. Ha a névnek van AAAA-rekordja, a Let's Encrypt először IPv6-ot próbál. Csak akkor tér vissza IPv4-re, ha IPv6-on egyáltalán nem jön létre kapcsolat.

A DNS-01 akkor szükséges, ha wildcard tanúsítványt szeretne, vagy ha a szerver kívülről nem érhető el. Ilyenkor az ACME-kliensnek módosítania kell tudnia a DNS-t, általában a DNS-szolgáltatója API-kulcsával. Ezzel a kulccsal a teljes DNS-e módosítható: ugyanolyan gondosan őrizze, mint egy jelszót.

A certbot telepítése

A certbot készítői a snap használatát javasolják, mert az mindig a legújabb verziót tartalmazza. Debianon és Ubuntun egyszerűen a csomagforrásból is telepíthető:

anna@web1:~$ sudo apt install certbot python3-certbot-nginx

A disztribúció verziója régebbi, de az apt révén biztonsági frissítéseket kap (4.1. és 4.2. lecke), és ez illeszkedik a tanfolyam többi részéhez. A kettő közül csak az egyiket válassza, ne mindkettőt: két telepítés megújításkor zavarja egymást.

Tanúsítvány igénylése

Ha a 7.2. lecke oldala már működik a 80-as porton:

anna@web1:~$ sudo certbot --nginx -d example.com -d www.example.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address or hit Enter to skip.
 (Enter 'c' to cancel):
...
Requesting a certificate for example.com and www.example.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/example.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/example.com/privkey.pem
This certificate expires on 2027-02-07.
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 example.com to /etc/nginx/sites-enabled/example.com
Successfully deployed certificate for www.example.com to /etc/nginx/sites-enabled/example.com
Congratulations! You have successfully enabled HTTPS on https://example.com and https://www.example.com

(A dátum és a részletek csak példák.) A --nginx bővítmény három dolgot végez: ideiglenesen előkészíti a kihívást, letölti a tanúsítványt, és kiegészíti a server blockot egy listen 443 ssl blokkal, valamint egy http-ről https-re mutató átirányítással. Ha ezt inkább saját maga végezné el, használja a certbot certonly --nginx módot, és a sorokat Ön írja be a konfigurációba.

Néhány dolog, amire érdemes figyelni:

  • Egyszerre igényelje az összes nevet, amely az oldalhoz tartozik (nevenként egy -d). Minden névnek a szerverre kell mutatnia, különben az egész igénylés meghiúsul.
  • A privát kulcs (privkey.pem) a /etc/letsencrypt/live/ könyvtárban található, és csak a root olvashatja. Ne másolja máshová, és soha ne tegye olyan biztonsági mentésbe, amelyet mások is olvashatnak.
  • Az e-mail-cím megadása nem kötelező. A Let's Encrypt 2025 júniusa óta nem küld e-mailt, ha egy tanúsítvány hamarosan lejár. Önnek kell tehát felügyelnie, hogy a megújítás sikerül-e (8.3. lecke).

Átirányítás http-ről https-re

A certbot futtatása után a konfigurációja nagyjából így néz ki (letisztítva; a certbot maga is hozzáad # managed by Certbot megjegyzéseket és néha if sorokat):

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name example.com www.example.com;
    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    root /var/www/example.com;
    ...
}

Az első blok mindent, ami http-n érkezik, ugyanarra a névre és ugyanarra az útvonalra irányít át https-en, állandó átirányítással (301). A megújításhoz szükséges kihívásfájl továbbra is működik: a Let's Encrypt követi ezt az átirányítást. A második blok a tényleges oldal. Ha a www címet is a csupasz névre szeretné irányítani (vagy fordítva), ezt egy külön blokkban tegye meg, hogy a látogatók egyetlen állandó nevet lássanak.

Megújítás: automatikusan, ellenőrizve

Egy Let's Encrypt tanúsítvány jelenleg 90 napig érvényes. Ez rövidülni fog: a Let's Encrypt bejelentette, hogy az alapértelmezett profil 2027. február 10-től 64 napos, 2028. február 16-tól pedig 45 napos tanúsítványokat ad ki. A kézi megújítás tehát nem megoldás; automatikusan kell történnie.

A certbot a telepítéskor létrehoz egy systemd-időzítőt (vagy egy cron-sort), amely naponta kétszer megnézi, kell-e tanúsítványt megújítani. Ellenőrizze, hogy ez megvan-e, és tesztelje a megújítást egy próbaigényléssel:

anna@web1:~$ systemctl list-timers 'certbot*'
NEXT                        LEFT    LAST PASSED UNIT          ACTIVATES
Mon 2026-11-09 22:41:00 CET 9h left -    -      certbot.timer certbot.service
anna@web1:~$ sudo certbot renew --dry-run
...
Congratulations, all simulated renewals succeeded:
  /etc/letsencrypt/live/example.com/fullchain.pem (success)

A megújítás után az nginx-nek is be kell töltenie az új tanúsítványt. Az nginx-bővítménnyel a certbot ezt maga intézi; ha a certonly módot használja, hozzon létre egy deploy hookot, amely újratölti az nginx-et, például egy futtatható szkriptet a /etc/letsencrypt/renewal-hooks/deploy/ könyvtárban ezzel a tartalommal: systemctl reload nginx.

A jó ACME-kliensek használják az ARI-t (ACME Renewal Information): ilyenkor maga a Let's Encrypt jelzi, mikor kell egy tanúsítványt megújítani, például korábban, ha valami gond van tanúsítványok egy csoportjával. Ezért tartsa naprakészen a kliensét.

Ha egy igénylés meghiúsul

Üzenet (rövidítve)OkMegoldás
Timeout during connect (likely firewall problem)a 80-as port zárva van, vagy a név másik címre mutattűzfal (5.2. lecke), A/AAAA (7.1. lecke)
Invalid response from http://.../.well-known/acme-challenge/...: 404egy másik szerver vagy másik server block válaszol, gyakran IPv6-onlisten [::]:80, az AAAA-rekord ellenőrzése
CAA record for example.com prevents issuanceegy CAA-rekord csak másik kiadót engedélyeza CAA módosítása (7.1. lecke)
too many certificates already issuedegy rate limitvárakozás; tesztelés stagingben

A Let's Encrypt a visszaélések megelőzésére rate limiteket (korlátokat) alkalmaz. A legfontosabbak: regisztrált domainenként 7 nap alatt legfeljebb 50 új tanúsítvány, pontosan ugyanarra a névkészletre 7 nap alatt legfeljebb 5 tanúsítvány, és nevenként óránként legfeljebb 5 sikertelen ellenőrzés. Aki kísérletezik, és újra meg újra igényel, hamar beleütközik ezekbe. Ezért teszteljen a staging környezetben, amelynek jóval tágabbak a korlátai, de olyan tanúsítványokat ad, amelyekben a böngészők nem bíznak meg:

anna@web1:~$ sudo certbot certonly --nginx --staging -d test.example.com

Ha ott működik, igényelje meg a valódi tanúsítványt.

AlmaLinuxon és Rocky Linuxon

Ott a certbot az EPEL-ből (dnf install certbot python3-certbot-nginx) vagy snapként érhető el. A bővítmény és a parancsok ugyanazok. Gondoljon a firewalld-re (--add-service=http --add-service=https), és a SELinuxra, ha a tanúsítványok szokatlan helyen vannak.

A gyakorlatban

Tárhelycsomagnál a panel intézi Ön helyett a tanúsítványt (a WebOké-nál és más, DirectAdmint, cPanelt vagy Pleskt használó tárhelyszolgáltatóknál is). Egy VPS-en Önnek kell elvégeznie, certbottal, Caddyvel vagy a szoftveréhez tartozó ACME-klienssel. Ez minden szolgáltatónál így van.

Összefoglalás

  • Egy Let's Encrypt tanúsítvány azt bizonyítja, hogy Ön kezeli a nevet; a certbot az ACME-n keresztül igényli, telepíti és megújítja.
  • A HTTP-01-hez mindenki számára nyitott 80-as port kell, és ugyanaz a válasz IPv4-en és IPv6-on; a DNS-01 a wildcardokhoz való.
  • A certbot --nginx -d ... -d ... intézi a tanúsítványt és a https-re irányítást; egy oldal összes nevét egyszerre igényelje.
  • A tanúsítványok jelenleg 90 napig érvényesek, és ez rövidülni fog; ellenőrizze az időzítőt és a certbot renew --dry-run parancsot, és saját maga is figyelje a lejárati dátumot.
  • A rate limitek elkerülése érdekében teszteljen a --staging kapcsolóval; figyeljen a CAA-ra.

Kvíz

1. Az oldalának csak https-en kell elérhetőnek lennie. Lezárhatja-e ilyenkor a 80-as portot a tűzfalban, ha HTTP-01-et használ?



2. Tanúsítványt szeretne a *.example.com névre. Melyik kihívásra van szüksége?



3. Az igénylés 404-es hibával meghiúsul a kihívásfájlnál, miközben a curl http://example.com/ IPv4-en megjeleníti az oldalát. Mi a legvalószínűbb ok?



4. Miért fontosabb most az automatikus megújítás, mint valaha?



5. Kísérletezik, és ma már négyszer igényelte ugyanazt a tanúsítványt. Mit tesz a következő próba előtt?



Feladat

Feladat Z7.3: https érvényes tanúsítvánnyal. Igényeljen tanúsítványt az oldalához (certbottal vagy Caddyvel), irányítsa át a http-t https-re, és tesztelje a megújítást a certbot renew --dry-run paranccsal (Caddy esetén: nézze meg a naplókban, hogy a tanúsítvány letöltődött-e). Adja meg az oldala nevét. A program TLS-kapcsolatot létesít a 443-as portra, és ellenőrzi, hogy a tanúsítvány érvényes-e, megbízható kiadó írta-e alá, és lefedi-e az Ön nevét, majd lekéri a http://<naam>/ címet, hogy lássa, átirányít-e https-re. Ezenkívül adja meg, mikor jár le a tanúsítványa, és hogyan van megoldva Önnél a megújítás.

Z7.3. feladat: https érvényes tanúsítvánnyal

Csak bejelentkezett résztvevők számára. A https://<naam>/ és a http://<naam>/ címet úgy nyitjuk meg, mint egy böngésző, a saját webszerverünkről.




Amit beír, és amit találunk, azt nem tároljuk. A böngészője megjegyzi a válaszait és azt, hogy teljesítette e a feladatot. Ha bejelentkezett, a Fiókomban csak azt tároljuk, hogy a feladat (majdnem) helyes volt; ott ezt is törölheti.

További olvasnivaló

Egy pillanat…

Domainek beállítása

Állítsa be domainenként a névszervereket, a tárhelyhez való kapcsolást és azt, hogy ki legyen a tulajdonos.

Domainek betöltése…