Prijeđite na sadržaj

Postavke kolačića

Za svaku vrstu odaberite koje kolačiće dopuštate. Svoj odabir uvijek možete promijeniti putem poveznice Postavke kolačića na dnu svake stranice. Izjava o privatnosti

Nužni

Uvijek uključeni

Potrebni za prijavu, čuvanje košarice i pamćenje Vaših odabira. Uvijek su uključeni.

Koji kolačići?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša sesija i to da ostanete prijavljeni
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cijena s PDV-om ili bez njega
  • wok_cookies: Vaš odabir kolačića, 12 mjeseci

Mjeri koji oglas dovodi do posjeta ili narudžbe, kako ne bismo plaćali oglase koji ništa ne donose.

Koji kolačići?
  • Google Ads putem Google Tag Managera (_gcl_au, _gcl_aw), do 90 dana
  • OpenAI Ads, oglasi u ChatGPT-u
  • wok_aff: preko kojeg ste partnera došli k nama (partnerski program), 60 dana

4,6

Država i jezik

Svaka država ima vlastitu stranicu, s cijenama i PDV-om te države.

Pogledajte

https s Let's Encryptom

Modul 7: Domena, web-poslužitelj i https · Vrijeme čitanja: 12 minuta

Cilj učenja: Nakon ove lekcije moći ćete s certbotom zatražiti besplatni certifikat od Let's Encrypta za nginx, preusmjeriti http na https, provjeriti automatsko obnavljanje i riješiti najčešće pogreške pri zahtjevu.

Ključni pojmovi: certifikat, izdavatelj certifikata (CA), ACME, Let's Encrypt, provjera domene, HTTP-01, DNS-01, TLS-ALPN-01, certbot, obnavljanje, certbot renew --dry-run, rok valjanosti, ARI, ograničenja broja zahtjeva (rate limits), staging, CAA, preusmjeravanje na https

Zašto https i što certifikat dokazuje

Bez https-a sve između preglednika i poslužitelja putuje mrežom nešifrirano: lozinke, obrasci, kolačići. Svatko na putu (javni wifi, hakirani usmjerivač) može to čitati ili nešto promijeniti. Preglednici zato http stranice označavaju kao "nije sigurno", a neke funkcije rade samo preko https-a. Za trezor poput Vaultwardena (lekcija 9.4) https je čak obavezan.

https koristi TLS, a za to Vaš poslužitelj treba certifikat: dokaz, potpisan od izdavatelja certifikata (CA) kojemu preglednici vjeruju, da ovaj ključ pripada ovom nazivu. Običan certifikat dokazuje samo da podnositelj zahtjeva upravlja nazivom domene (provjera domene). On ne govori ništa o tome tko ste ni jeste li pouzdani.

Let's Encrypt je besplatni CA koji izdaje samo certifikate s provjerom domene, potpuno automatski putem protokola ACME. Program na Vašem poslužitelju (ACME klijent) zatraži certifikat, dokaže da upravlja nazivom, instalira ga i na vrijeme obnovi. Ova lekcija koristi certbot, klijent organizacije EFF. Caddy (lekcija 7.4) ima ugrađen ACME klijent.

Kako dokazujete da upravljate nazivom?

Let's Encrypt poznaje tri vrste izazova (challenges):

IzazovKakoPriključakWildcard (*.example.com)
HTTP-01postavljanje datoteke pod http://<naam>/.well-known/acme-challenge/80ne
DNS-01postavljanje TXT zapisa _acme-challenge.<naam>nijedanda
TLS-ALPN-01prikazivanje posebnog certifikata tijekom TLS rukovanja (handshake)443ne

Za običan VPS s web-stranicom HTTP-01 je najjednostavniji. Za to mora vrijediti sljedeće:

  • naziv putem zapisa A (i AAAA) pokazuje na Vaš poslužitelj (lekcija 7.1);
  • priključak 80 je otvoren za cijeli svijet, čak i ako Vaša stranica inače koristi samo https. Let's Encrypt provjerava samo preko priključka 80 i s više mjesta na internetu; te adrese ne možete unijeti u vatrozid;
  • Vaš poslužitelj preko IPv4 i IPv6 daje isti odgovor. Ako naziv ima AAAA zapis, Let's Encrypt najprije pokušava preko IPv6. Tek ako IPv6 uopće ne uspostavi vezu, vraća se na IPv4.

DNS-01 Vam je potreban za wildcard certifikat ili ako poslužitelj nije dostupan izvana. Tada ACME klijent mora moći mijenjati Vaš DNS, obično pomoću API ključa Vašeg DNS pružatelja. Taj ključ može promijeniti cijeli Vaš DNS: čuvajte ga jednako pažljivo kao lozinku.

Instalacija certbota

Autori certbota preporučuju snap, jer on uvijek ima najnoviju verziju. Na Debianu i Ubuntuu može se instalirati i jednostavno iz repozitorija paketa:

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

Verzija iz distribucije je starija, ali dobiva sigurnosna ažuriranja putem apt-a (lekcije 4.1 i 4.2), što se uklapa u ostatak ovog tečaja. Odaberite jedno od to dvoje, ne oboje: dvije instalacije međusobno si smetaju pri obnavljanju.

Zahtjev za certifikat

Uz stranicu iz lekcije 7.2 koja već radi na priključku 80:

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

(Datum i pojedinosti su primjer.) Dodatak --nginx radi tri stvari: privremeno priprema izazov, preuzima certifikat i prilagođava Vaš server block dodavanjem bloka listen 443 ssl i preusmjeravanja s http na https. Ako to radije želite učiniti sami, upotrijebite certbot certonly --nginx i sami unesite retke u svoju konfiguraciju.

Nekoliko stvari na koje treba paziti:

  • Zatražite odjednom sve nazive koji pripadaju stranici (-d za svaki naziv). Svaki naziv mora pokazivati na poslužitelj, inače cijeli zahtjev ne uspijeva.
  • Privatni ključ (privkey.pem) nalazi se u /etc/letsencrypt/live/ i može ga čitati samo root. Ne kopirajte ga na druga mjesta i nikada ga ne stavljajte u sigurnosnu kopiju koju drugi mogu čitati.
  • Adresa e-pošte nije obavezna. Let's Encrypt od lipnja 2025. više ne šalje poruke kada certifikat uskoro istječe. Zato sami morate nadzirati uspijeva li obnavljanje (lekcija 8.3).

Preusmjeravanje s http na https

Nakon certbota Vaša konfiguracija izgleda otprilike ovako (pročišćeno; certbot sam dodaje komentare # managed by Certbot i ponekad retke if):

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;
    ...
}

Prvi blok sve preko http-a preusmjerava na isti naziv i istu putanju preko https-a, trajnim preusmjeravanjem (301). Datoteka izazova za obnavljanje i dalje radi: Let's Encrypt slijedi to preusmjeravanje. Drugi blok je prava stranica. Ako želite i www preusmjeriti na goli naziv (ili obrnuto), učinite to u zasebnom bloku, tako da posjetitelji vide jedan stalni naziv.

Obnavljanje: automatski, uz provjeru

Certifikat od Let's Encrypta sada vrijedi 90 dana. To će se skratiti: Let's Encrypt je najavio da će standardni profil od 10. veljače 2027. izdavati certifikate od 64 dana, a od 16. veljače 2028. od 45 dana. Ručno obnavljanje stoga nije opcija; mora se odvijati automatski.

certbot pri instalaciji postavlja systemd timer (ili cron redak) koji dvaput dnevno provjerava treba li neki certifikat obnoviti. Provjerite postoji li on i testirajte obnavljanje probnim zahtjevom:

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)

Nakon obnavljanja nginx mora učitati i novi certifikat. S dodatkom za nginx certbot to sam rješava; ako koristite certonly, postavite deploy hook koji ponovno učitava nginx, na primjer izvršnu skriptu u /etc/letsencrypt/renewal-hooks/deploy/ s systemctl reload nginx.

Dobri ACME klijenti koriste ARI (ACME Renewal Information): Let's Encrypt tada sam kaže kada treba obnoviti certifikat, na primjer ranije ako nešto nije u redu s nizom certifikata. Zato redovito ažurirajte svoj klijent.

Kada zahtjev ne uspije

Poruka (skraćeno)UzrokRješenje
Timeout during connect (likely firewall problem)priključak 80 je zatvoren ili naziv pokazuje na drugu adresuvatrozid (lekcija 5.2), A/AAAA (lekcija 7.1)
Invalid response from http://.../.well-known/acme-challenge/...: 404odgovara drugi poslužitelj ili drugi server block, često preko IPv6listen [::]:80, provjerite AAAA zapis
CAA record for example.com prevents issuanceCAA zapis dopušta samo drugog izdavateljaprilagodite CAA (lekcija 7.1)
too many certificates already issueddosegnuto ograničenje broja zahtjeva (rate limit)pričekajte; testirajte sa stagingom

Let's Encrypt ima ograničenja broja zahtjeva (rate limits) kako bi spriječio zlouporabu. Najvažnija su: najviše 50 novih certifikata po registriranoj domeni u 7 dana, najviše 5 certifikata za potpuno isti skup naziva u 7 dana i najviše 5 neuspjelih provjera po nazivu na sat. Tko eksperimentira i stalno iznova šalje zahtjev, brzo će ih dosegnuti. Zato testirajte u okruženju staging, koje ima mnogo šire granice, ali izdaje certifikate kojima preglednici ne vjeruju:

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

Ako tamo radi, zatražite pravi certifikat.

Na AlmaLinuxu i Rocky Linuxu

certbot se ondje instalira iz EPEL-a (dnf install certbot python3-certbot-nginx) ili kao snap. Dodatak i naredbe su isti. Imajte na umu firewalld (--add-service=http --add-service=https) i SELinux ako se certifikati nalaze na neuobičajenom mjestu.

U praksi

Kod paketa web-hostinga certifikat za Vas rješava upravljačka ploča (kod WebOké i kod drugih hosting tvrtki s DirectAdminom, cPanelom ili Pleskom). Na VPS-u to radite sami, s certbotom, Caddyjem ili ACME klijentom koji dolazi uz Vaš softver. To vrijedi kod svakog pružatelja.

Sažetak

  • Certifikat od Let's Encrypta dokazuje da upravljate nazivom; certbot ga putem ACME-a zatraži, instalira i obnavlja.
  • HTTP-01 zahtijeva priključak 80 otvoren za sve i isti odgovor preko IPv4 i IPv6; DNS-01 služi za wildcard certifikate.
  • certbot --nginx -d ... -d ... rješava certifikat i preusmjeravanje na https; zatražite odjednom sve nazive jedne stranice.
  • Certifikati sada vrijede 90 dana i postat će kraći; provjerite timer i certbot renew --dry-run te sami nadzirite datum isteka.
  • Testirajte s --staging kako biste izbjegli ograničenja broja zahtjeva; pazite na CAA.

Kviz

1. Vaša stranica mora biti dostupna samo preko https-a. Smijete li tada zatvoriti priključak 80 u vatrozidu ako koristite HTTP-01?



2. Želite certifikat za *.example.com. Koji izazov Vam je potreban?



3. Zahtjev ne uspijeva zbog pogreške 404 na datoteci izazova, iako curl http://example.com/ preko IPv4 prikazuje Vašu stranicu. Koji je najvjerojatniji uzrok?



4. Zašto je automatsko obnavljanje važnije nego ikad?



5. Eksperimentirate i danas ste već četiri puta zatražili isti certifikat. Što radite za sljedeći pokušaj?



Zadatak

Zadatak Z7.3: https s valjanim certifikatom. Zatražite certifikat za svoju stranicu (s certbotom ili Caddyjem), preusmjerite http na https i testirajte obnavljanje s certbot renew --dry-run (kod Caddyja: u zapisima provjerite je li certifikat preuzet). Unesite naziv svoje stranice. Program uspostavlja TLS vezu na priključak 443 i provjerava je li certifikat valjan, je li ga potpisao pouzdani izdavatelj i pokriva li Vaš naziv, a zatim zatraži http://<naam>/ kako bi vidio preusmjeravate li na https. Osim toga unosite kada Vaš certifikat istječe i kako je kod Vas riješeno obnavljanje.

Zadatak Z7.3: https s valjanim certifikatom

Samo za prijavljene polaznike. Otvaramo https://<naam>/ i http://<naam>/ kao preglednik, s našeg web poslužitelja.




Ono što unesete i što pronađemo ne spremamo. Vaš preglednik pamti Vaše odgovore i je li zadatak položen. Ako ste prijavljeni, u Moji tečajevi čuvamo samo podatak da ste zadatak (gotovo) uspješno riješili; ondje to možete i izbrisati.

Dodatno štivo

Trenutak…

Postavite svoje domene

Za svaku domenu odredite nameservere, povezivanje s hostingom i tko postaje vlasnik.

Učitavanje Vaših domena…