Mine sisu juurde

Küpsiste seaded

Vali iga liigi kohta, milliseid küpsiseid lubad. Oma valikut saad alati muuta iga lehe allosas oleva lingi „Küpsiste seaded“ kaudu. Privaatsuspoliitika

Vajalikud

Alati sees

Vajalikud sisselogimiseks, ostukorvi säilitamiseks ja sinu valikute meelespidamiseks. Need on alati sees.

Millised küpsised?
  • weboke_sessie, weboke_klant, weboke_remember: sinu seanss ja sisselogituks jäämine
  • weboke_basket: sinu ostukorv
  • wkBtwIncl: hindade näitamine koos käibemaksuga või ilma
  • wok_cookies: sinu küpsisevalik, 12 kuud

Mõõdab, milline reklaam viib külastuse või tellimuseni, et me ei maksaks reklaamide eest, mis midagi ei anna.

Millised küpsised?
  • Google Ads Google Tag Manageri kaudu (_gcl_au, _gcl_aw), kuni 90 päeva
  • OpenAI Ads, reklaamid ChatGPT-s
  • wok_aff: millise partneri kaudu meie juurde jõudsid (partnerprogramm), 60 päeva

4,6

Riik ja keel

Igal riigil on oma sait, selle riigi hindade ja käibemaksuga.

Vaata

https Let's Encryptiga

Moodul 7: Domeen, veebiserver ja https · Lugemisaeg: 12 minutit

Õpieesmärk: Pärast seda õppetundi oskad certbotiga taotleda nginxile Let's Encrypti tasuta sertifikaati, suunata http-liikluse https-ile, kontrollida automaatset uuendamist ja lahendada taotlemisel kõige sagedamini ette tulevaid vigu.

Põhimõisted: sertifikaat, sertifitseerimiskeskus (CA), ACME, Let's Encrypt, domeeni valideerimine, HTTP-01, DNS-01, TLS-ALPN-01, certbot, uuendamine, certbot renew --dry-run, kehtivusaeg, ARI, päringupiirangud (rate limits), staging, CAA, https-ile suunamine

Miks https ja mida sertifikaat tõendab

Ilma https-ita liigub kõik brauseri ja serveri vahel võrgus krüptimata kujul: paroolid, vormid, küpsised. Igaüks teel (avalik wifi, häkitud ruuter) saab neid lugeda või muuta. Seetõttu märgivad brauserid http-saidid kui "ebaturvalised" ja mõni funktsioon töötab ainult https kaudu. Paroolihoidla Vaultwarden (õppetund 9.4) jaoks on https lausa kohustuslik.

https kasutab TLS-i ja selleks vajab su server sertifikaati: tõendit, mille on allkirjastanud brauserite usaldatud sertifitseerimiskeskus (CA) ja mis kinnitab, et see võti kuulub selle nime juurde. Tavaline sertifikaat tõendab ainult seda, et taotleja haldab domeeninime (domeeni valideerimine). See ei ütle midagi selle kohta, kes sa oled või kas sa oled usaldusväärne.

Let's Encrypt on tasuta CA, mis väljastab ainult domeeniga valideeritud sertifikaate, täiesti automaatselt ACME-protokolli kaudu. Sinu serveris olev programm (ACME-klient) taotleb sertifikaadi, tõendab, et haldab nime, paigaldab sertifikaadi ja uuendab seda õigel ajal. Selles õppetunnis kasutame EFF-i klienti certbot. Caddyl (õppetund 7.4) on ACME-klient sisse ehitatud.

Kuidas tõendada, et haldad nime?

Let's Encryptil on kolme tüüpi väljakutseid (challenges):

VäljakutseKuidasPortMetamärk (*.example.com)
HTTP-01pane fail asukohta http://<naam>/.well-known/acme-challenge/80ei
DNS-01lisa TXT-kirje _acme-challenge.<naam>puudubjah
TLS-ALPN-01näita TLS-kätlusel spetsiaalset sertifikaati443ei

Tavalise veebisaidiga VPS-i puhul on HTTP-01 kõige lihtsam. Selleks peab:

  • nimi viitama A- (ja AAAA-) kirjega sinu serverile (õppetund 7.1);
  • port 80 olema avatud kogu maailmale, ka siis, kui su sait kasutab muidu ainult https-i. Let's Encrypt valideerib ainult pordi 80 kaudu ja mitmest kohast internetis; neid aadresse ei saa sa tulemüüri lisada;
  • su server vastama IPv4 ja IPv6 kaudu ühtmoodi. Kui nimel on AAAA-kirje, proovib Let's Encrypt esmalt IPv6-t. Ainult siis, kui IPv6 kaudu ühendust üldse ei teki, läheb see üle IPv4-le.

DNS-01 on vaja metamärgiga sertifikaadi jaoks või siis, kui server pole väljastpoolt kättesaadav. Siis peab ACME-klient saama su DNS-i muuta, tavaliselt sinu DNS-teenuse pakkuja API-võtme abil. Selle võtmega saab muuta kogu su DNS-i: hoia seda sama hoolikalt kui parooli.

certboti paigaldamine

certboti tegijad soovitavad snapi, sest selles on alati uusim versioon. Debianis ja Ubuntus saab selle ka lihtsalt pakiallikast:

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

Distributsiooni versioon on vanem, kuid saab turvauuendusi apt kaudu (õppetunnid 4.1 ja 4.2) ja see sobib ülejäänud kursusega. Vali üks neist kahest, mitte mõlemat: kaks paigaldust segavad uuendamisel teineteist.

Sertifikaadi taotlemine

Kui õppetunni 7.2 sait juba töötab pordil 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

(Kuupäev ja üksikasjad on näitlikud.) Plugin --nginx teeb kolme asja: valmistab ajutiselt ette väljakutse, laadib sertifikaadi alla ja muudab su server blocki, lisades listen 443 ssl-ploki ja suunamise http-lt https-ile. Kui soovid seda ise teha, kasuta certbot certonly --nginx ja lisa read ise oma konfiguratsiooni.

Mõned asjad, millele tähelepanu pöörata:

  • Taotle kõik saidiga seotud nimed korraga (-d iga nime kohta). Iga nimi peab viitama serverile, muidu ebaõnnestub kogu taotlus.
  • Privaatvõti (privkey.pem) asub kaustas /etc/letsencrypt/live/ ja on loetav ainult rootile. Ära kopeeri seda mujale ega pane seda kunagi varukoopiasse, mida teised saavad lugeda.
  • E-posti aadress on valikuline. Let's Encrypt ei saada alates 2025. aasta juunist enam e-kirju, kui sertifikaat hakkab aeguma. Pead seega ise jälgima, et uuendamine õnnestub (õppetund 8.3).

http suunamine https-ile

Pärast certbotit näeb su konfiguratsioon välja umbes selline (puhastatud; certbot lisab ise kommentaarid # managed by Certbot ja vahel ka if-read):

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

Esimene plokk suunab kõik http-päringud püsiva suunamisega (301) https kaudu samale nimele ja samale teele. Uuendamise väljakutsefail töötab endiselt: Let's Encrypt järgib seda suunamist. Teine plokk on päris sait. Kui soovid ka www suunata paljale nimele (või vastupidi), tee seda eraldi plokis, et külastajad näeksid ühte kindlat nime.

Uuendamine: automaatne ja kontrollitud

Let's Encrypti sertifikaat kehtib praegu 90 päeva. See aeg lüheneb: Let's Encrypt on teatanud, et standardprofiil väljastab alates 10. veebruarist 2027 64-päevaseid ja alates 16. veebruarist 2028 45-päevaseid sertifikaate. Käsitsi uuendamine pole seega lahendus; see peab käima automaatselt.

certbot loob paigaldamisel systemd-taimeri (või cron-rea), mis kaks korda päevas kontrollib, kas mõnda sertifikaati on vaja uuendada. Kontrolli, et see on olemas, ja testi uuendamist prooviaregistreerimisega:

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)

Pärast uuendamist peab nginx ka uue sertifikaadi laadima. nginxi pluginaga hoolitseb certbot selle eest ise; kui kasutad certonly, lisa deploy hook, mis laadib nginxi uuesti, näiteks käivitatav skript kaustas /etc/letsencrypt/renewal-hooks/deploy/ sisuga systemctl reload nginx.

Head ACME-kliendid kasutavad ARI-t (ACME Renewal Information): siis ütleb Let's Encrypt ise, millal sertifikaati tuleb uuendada, näiteks varem, kui mõne sertifikaadipartiiga on probleem. Hoia seepärast oma klient ajakohane.

Kui taotlus ebaõnnestub

Teade (lühendatud)PõhjusLahendus
Timeout during connect (likely firewall problem)port 80 on suletud või nimi viitab teisele aadressiletulemüür (õppetund 5.2), A/AAAA (õppetund 7.1)
Invalid response from http://.../.well-known/acme-challenge/...: 404vastab teine server või teine server block, sageli IPv6 kaudulisten [::]:80, kontrolli AAAA-kirjet
CAA record for example.com prevents issuanceCAA-kirje lubab ainult teist väljastajatmuuda CAA-d (õppetund 7.1)
too many certificates already issuedpäringupiirang (rate limit)oota; testi staging-keskkonnas

Let's Encryptil on kuritarvitamise vältimiseks päringupiirangud (rate limits). Tähtsamad: kõige rohkem 50 uut sertifikaati registreeritud domeeni kohta 7 päeva jooksul, kõige rohkem 5 sertifikaati täpselt sama nimede komplekti kohta 7 päeva jooksul ja kõige rohkem 5 ebaõnnestunud valideerimist nime kohta tunnis. Kes katsetab ja taotleb ikka ja jälle uuesti, jõuab nendeni kiiresti. Testi seepärast staging-keskkonnas, kus piirangud on palju avaramad, kuid sertifikaate brauserid ei usalda:

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

Kui seal töötab, taotle päris sertifikaat.

AlmaLinuxis ja Rocky Linuxis

Seal saad certboti EPEL-ist (dnf install certbot python3-certbot-nginx) või snapina. Plugin ja käsud on samad. Pea meeles firewalld (--add-service=http --add-service=https) ja SELinuxit, kui sertifikaadid asuvad ebatavalises kohas.

Praktikas

Majutuspaketi puhul hoolitseb sertifikaadi eest paneel (WebOkés ja teistes majutusettevõtetes, kus on DirectAdmin, cPanel või Plesk). VPS-is teed seda ise, certboti, Caddy või oma tarkvaraga kaasas oleva ACME-kliendiga. See kehtib iga pakkuja puhul.

Kokkuvõte

  • Let's Encrypti sertifikaat tõendab, et haldad nime; certbot taotleb, paigaldab ja uuendab seda ACME kaudu.
  • HTTP-01 vajab porti 80 avatuna kõigile ja sama vastust IPv4 ja IPv6 kaudu; DNS-01 on metamärkide jaoks.
  • certbot --nginx -d ... -d ... hoolitseb sertifikaadi ja https-ile suunamise eest; taotle saidi kõik nimed korraga.
  • Sertifikaadid kehtivad praegu 90 päeva ja see aeg lüheneb; kontrolli taimerit ja certbot renew --dry-run ning jälgi aegumiskuupäeva ise.
  • Testi käsuga --staging, et vältida päringupiiranguid; pea silmas CAA-d.

Test (quiz)

1. Su sait peab olema kättesaadav ainult https kaudu. Kas võid HTTP-01 kasutamisel pordi 80 tulemüüris sulgeda?



2. Soovid sertifikaati nimele *.example.com. Millist väljakutset vajad?



3. Taotlus ebaõnnestub väljakutsefaili 404-veaga, kuigi curl http://example.com/ näitab IPv4 kaudu sinu saiti. Mis on kõige tõenäolisem põhjus?



4. Miks on automaatne uuendamine olulisem kui kunagi varem?



5. Katsetad ja oled täna juba neli korda sama sertifikaati taotlenud. Mida teed järgmise katse jaoks?



Ülesanne

Ülesanne Z7.3: https kehtiva sertifikaadiga. Taotle oma saidile sertifikaat (certboti või Caddyga), suuna http https-ile ja testi uuendamist käsuga certbot renew --dry-run (Caddy puhul: vaata logidest, kas sertifikaat on alla laaditud). Sisesta oma saidi nimi. Programm loob TLS-ühenduse porti 443 ja kontrollib, kas sertifikaat kehtib, on allkirjastatud usaldusväärse väljastaja poolt ja katab sinu nime, ning pärib seejärel http://<naam>/, et näha, kas suunad https-ile. Lisaks märgi, millal su sertifikaat aegub ja kuidas uuendamine sinu juures korraldatud on.

Ülesanne Z7.3: https kehtiva sertifikaadiga

Ainult registreeritud kursuslastele. Avame meie veebiserverist https://<naam>/ ja http://<naam>/ nii, nagu brauser seda teeb.




Seda, mida sisestad, ja mida leiame, me ei salvesta. Su brauser jätab meelde su vastused ja selle, kas sooritasid ülesande. Kui oled sisse loginud, salvestame Minu kursustes ainult info, et sul oli ülesanne (peaaegu) õige; ka selle saad sealt kustutada.

Loe edasi

Hetk…

Seadista oma domeenid

Määra iga domeeni jaoks nimeserverid, seos sinu majutusega ja kes saab omanikuks.

Laadin sinu domeene…