Pāriet uz saturu

Sīkdatņu iestatījumi

Izvēlieties, kāda veida sīkdatnes atļaujat. Savu izvēli varat jebkurā laikā mainīt sadaļā Sīkdatņu iestatījumi katras lapas apakšā. Privātuma politika

Nepieciešamās

Vienmēr ieslēgtas

Vajadzīgas, lai pieteiktos, saglabātu grozu un atcerētos Jūsu izvēles. Tās vienmēr ir ieslēgtas.

Kuras sīkdatnes?
  • weboke_sessie, weboke_klant, weboke_remember: Jūsu sesija un pieteikšanās saglabāšana
  • weboke_basket: Jūsu grozs
  • wkBtwIncl: cenu rādīšana ar PVN vai bez PVN
  • wok_cookies: Jūsu sīkdatņu izvēle, 12 mēneši

Mēra, kura reklāma noved pie apmeklējuma vai pasūtījuma, lai mēs nemaksātu par reklāmām, kas neko nedod.

Kuras sīkdatnes?
  • Google Ads ar Google Tag Manager (_gcl_au, _gcl_aw), līdz 90 dienām
  • OpenAI Ads, reklāmas ChatGPT
  • wok_aff: caur kuru partneri nonācāt pie mums (partneru programma), 60 dienas

4,6

Valsts un valoda

Katrai valstij ir sava vietne ar attiecīgās valsts cenām un PVN.

Skatīt

https ar Let's Encrypt

7. modulis: Domēns, tīmekļa serveris un https · Lasīšanas laiks: 12 min.

Mācīšanās mērķis: Pēc šīs nodarbības Jūs ar certbot varēsiet pieprasīt bezmaksas Let's Encrypt sertifikātu nginx serverim, pāradresēt http uz https, pārbaudīt automātisko atjaunošanu un novērst biežākās kļūdas pieprasījuma laikā.

Pamatjēdzieni: sertifikāts, sertifikātu izdevējs (CA), ACME, Let's Encrypt, domēna validācija, HTTP-01, DNS-01, TLS-ALPN-01, certbot, atjaunošana, certbot renew --dry-run, derīguma termiņš, ARI, rate limits, staging, CAA, pāradresācija uz https

Kāpēc https un ko pierāda sertifikāts

Bez https viss starp pārlūku un serveri pa tīklu tiek sūtīts nešifrēts: paroles, veidlapas, sīkfaili. Ikviens ceļā (publisks wifi, uzlauzts maršrutētājs) var to izlasīt vai kaut ko mainīt. Tāpēc pārlūki http vietnes atzīmē kā "nav droša", un dažas funkcijas darbojas tikai caur https. Paroļu glabātuvei, piemēram, Vaultwarden (nodarbība 9.4), https ir pat obligāts.

https izmanto TLS, un tam Jūsu serverim nepieciešams sertifikāts: apliecinājums, ko parakstījis pārlūkiem uzticams sertifikātu izdevējs (CA), ka šī atslēga pieder šim nosaukumam. Parasts sertifikāts pierāda tikai to, ka pieprasītājs pārvalda domēna nosaukumu (domēna validācija). Tas neko nesaka par to, kas Jūs esat vai vai Jūs esat uzticams partneris.

Let's Encrypt ir bezmaksas CA, kas izdod tikai domēnam validētus sertifikātus, pilnīgi automātiski, izmantojot ACME protokolu. Programma Jūsu serverī (ACME klients) pieprasa sertifikātu, pierāda, ka pārvalda nosaukumu, to instalē un laikus atjauno. Šajā nodarbībā izmantojam certbot, EFF izstrādāto klientu. Caddy (nodarbība 7.4) ACME klients ir iebūvēts.

Kā pierādīt, ka Jūs pārvaldāt nosaukumu?

Let's Encrypt piedāvā trīs veidu pārbaudes (challenges):

PārbaudeKāPortsWildcard (*.example.com)
HTTP-01novietot failu zem http://<naam>/.well-known/acme-challenge/80nē
DNS-01izveidot TXT ierakstu _acme-challenge.<naam>navjā
TLS-ALPN-01TLS rokasspiediena laikā parādīt īpašu sertifikātu443nē

Parastam VPS ar vietni vienkāršākā ir HTTP-01. Tam nepieciešams, lai:

  • nosaukums ar A (un AAAA) ierakstu norādītu uz Jūsu serveri (nodarbība 7.1);
  • ports 80 būtu atvērts visai pasaulei, arī ja Jūsu vietne citādi izmanto tikai https. Let's Encrypt validē tikai caur portu 80 un no vairākām vietām internetā; šīs adreses nav iespējams ierakstīt ugunsmūrī;
  • Jūsu serveris caur IPv4 un IPv6 atbildētu vienādi. Ja nosaukumam ir AAAA ieraksts, Let's Encrypt vispirms mēģina IPv6. Tikai tad, ja caur IPv6 savienojumu vispār nevar izveidot, tas atgriežas pie IPv4.

DNS-01 Jums vajadzīgs wildcard sertifikātam vai tad, ja serveris nav sasniedzams no ārpuses. Tad ACME klientam jāspēj mainīt Jūsu DNS, parasti ar Jūsu DNS pakalpojumu sniedzēja API atslēgu. Ar šo atslēgu var mainīt visu Jūsu DNS: glabājiet to tikpat rūpīgi kā paroli.

certbot instalēšana

certbot izstrādātāji iesaka snap, jo tajā vienmēr ir jaunākā versija. Debian un Ubuntu to var instalēt arī vienkārši no pakotņu avota:

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

Distribūcijas versija ir vecāka, bet saņem drošības atjauninājumus caur apt (nodarbības 4.1 un 4.2), un tas atbilst pārējam šajā kursā. Izvēlieties vienu no abiem variantiem, ne abus: divas instalācijas atjaunošanas laikā traucē viena otrai.

Sertifikāta pieprasīšana

Ja vietne no nodarbības 7.2 jau darbojas uz porta 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

(Datums un detaļas ir piemērs.) Spraudnis --nginx veic trīs darbības: uz laiku sagatavo pārbaudi, saņem sertifikātu un pielāgo Jūsu server block, pievienojot listen 443 ssl bloku un pāradresāciju no http uz https. Ja vēlaties to darīt paši, izmantojiet certbot certonly --nginx un ierakstiet rindas konfigurācijā paši.

Dažas lietas, kurām pievērst uzmanību:

  • Pieprasiet visus nosaukumus uzreiz, kas pieder vietnei (-d katram nosaukumam). Katram nosaukumam jānorāda uz serveri, citādi neizdodas viss pieprasījums.
  • Privātā atslēga (privkey.pem) atrodas /etc/letsencrypt/live/ un ir lasāma tikai root. Nekopējiet to uz citām vietām un nekad neievietojiet to rezerves kopijā, ko var lasīt citi.
  • E-pasta adrese nav obligāta. Kopš 2025. gada jūnija Let's Encrypt vairs nesūta e-pastus, kad sertifikāta derīgums tuvojas beigām. Tāpēc Jums pašiem jāuzrauga, vai atjaunošana izdodas (nodarbība 8.3).

http pāradresācija uz https

Pēc certbot Jūsu konfigurācija izskatās aptuveni šādi (sakārtota; certbot pats pievieno komentārus # managed by Certbot un dažreiz if rindas):

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

Pirmais bloks visu, kas nāk caur http, pāradresē uz to pašu nosaukumu un to pašu ceļu caur https ar pastāvīgu pāradresāciju (301). Pārbaudes fails atjaunošanai joprojām darbojas: Let's Encrypt seko šai pāradresācijai. Otrais bloks ir īstā vietne. Ja vēlaties arī www pāradresēt uz nosaukumu bez prefiksa (vai otrādi), dariet to atsevišķā blokā, lai apmeklētāji redzētu vienu nemainīgu nosaukumu.

Atjaunošana: automātiski un ar pārbaudi

Let's Encrypt sertifikāts pašlaik ir derīgs 90 dienas. Šis termiņš kļūs īsāks: Let's Encrypt ir paziņojis, ka standarta profils no 10. februāra 2027 izdos sertifikātus uz 64 dienām un no 16. februāra 2028 uz 45 dienām. Manuāla atjaunošana tāpēc nav risinājums; tai jānotiek automātiski.

Instalēšanas laikā certbot izveido systemd taimeri (vai cron rindu), kas divreiz dienā pārbauda, vai kāds sertifikāts jāatjauno. Pārbaudiet, vai tas ir izveidots, un notestējiet atjaunošanu ar izmēģinājuma pieprasījumu:

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ēc atjaunošanas nginx jāielādē arī jaunais sertifikāts. Ar nginx spraudni certbot to nokārto pats; ja izmantojat certonly, izveidojiet deploy hook, kas pārlādē nginx, piemēram, izpildāmu skriptu mapē /etc/letsencrypt/renewal-hooks/deploy/ ar systemctl reload nginx.

Labi ACME klienti izmanto ARI (ACME Renewal Information): tad Let's Encrypt pats norāda, kad sertifikāts jāatjauno, piemēram, agrāk, ja ar kādu sertifikātu sēriju radusies problēma. Tāpēc uzturiet savu klientu atjauninātu.

Ja pieprasījums neizdodas

Ziņojums (saīsināts)CēlonisRisinājums
Timeout during connect (likely firewall problem)ports 80 ir slēgts, vai nosaukums norāda uz citu adresiugunsmūris (nodarbība 5.2), A/AAAA (nodarbība 7.1)
Invalid response from http://.../.well-known/acme-challenge/...: 404atbild cits serveris vai cits server block, bieži caur IPv6listen [::]:80, pārbaudīt AAAA ierakstu
CAA record for example.com prevents issuanceCAA ieraksts atļauj tikai citu izdevējupielāgot CAA (nodarbība 7.1)
too many certificates already issuedrate limitpagaidīt; testēt ar staging

Let's Encrypt ir rate limits (pieprasījumu ierobežojumi), lai novērstu ļaunprātīgu izmantošanu. Svarīgākie: ne vairāk kā 50 jauni sertifikāti uz reģistrētu domēnu 7 dienās, ne vairāk kā 5 sertifikāti tieši tai pašai nosaukumu kopai 7 dienās un ne vairāk kā 5 neizdevušās validācijas vienam nosaukumam stundā. Ja Jūs eksperimentējat un pieprasāt atkal un atkal, šos ierobežojumus sasniegsiet ātri. Tāpēc testējiet ar staging vidi, kurai ir daudz plašāki ierobežojumi, bet kura izdod sertifikātus, kam pārlūki neuzticas:

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

Ja tur viss darbojas, pieprasiet īsto sertifikātu.

AlmaLinux un Rocky Linux

Tur certbot pieejams no EPEL (dnf install certbot python3-certbot-nginx) vai kā snap. Spraudnis un komandas ir tādi paši. Atcerieties par firewalld (--add-service=http --add-service=https) un par SELinux, ja sertifikāti atrodas neierastā vietā.

Praksē

Hostinga plānā sertifikātu Jūsu vietā nokārto vadības panelis (pie WebOké un pie citiem hostinga uzņēmumiem ar DirectAdmin, cPanel vai Plesk). VPS serverī to darāt paši, ar certbot, Caddy vai ACME klientu, kas pieder Jūsu programmatūrai. Tas attiecas uz jebkuru pakalpojumu sniedzēju.

Kopsavilkums

  • Let's Encrypt sertifikāts pierāda, ka Jūs pārvaldāt nosaukumu; certbot to pieprasa, instalē un atjauno caur ACME.
  • HTTP-01 vajadzīgs ports 80, atvērts visiem, un vienāda atbilde caur IPv4 un IPv6; DNS-01 ir paredzēts wildcard sertifikātiem.
  • certbot --nginx -d ... -d ... nokārto sertifikātu un pāradresāciju uz https; pieprasiet visus vietnes nosaukumus uzreiz.
  • Sertifikāti pašlaik ir derīgi 90 dienas, un termiņš kļūs īsāks; pārbaudiet taimeri un certbot renew --dry-run, un pašu spēkiem uzraugiet derīguma beigu datumu.
  • Testējiet ar --staging, lai izvairītos no rate limits; pievērsiet uzmanību CAA.

Tests (quiz)

1. Jūsu vietnei jābūt pieejamai tikai caur https. Vai, izmantojot HTTP-01, drīkstat ugunsmūrī aizvērt portu 80?



2. Jūs vēlaties sertifikātu *.example.com. Kura pārbaude Jums nepieciešama?



3. Pieprasījums neizdodas ar 404 pārbaudes failam, lai gan curl http://example.com/ caur IPv4 parāda Jūsu vietni. Kāds ir visticamākais cēlonis?



4. Kāpēc automātiskā atjaunošana ir svarīgāka nekā jebkad?



5. Jūs eksperimentējat un šodien jau četras reizes esat pieprasījis to pašu sertifikātu. Ko darīt nākamajam mēģinājumam?



Uzdevums

Uzdevums Z7.3: https ar derīgu sertifikātu. Pieprasiet savai vietnei sertifikātu (ar certbot vai Caddy), pāradresējiet http uz https un notestējiet atjaunošanu ar certbot renew --dry-run (ar Caddy: pārbaudiet žurnālos, vai sertifikāts ir saņemts). Ievadiet savas vietnes nosaukumu. Programma izveido TLS savienojumu ar portu 443 un pārbauda, vai sertifikāts ir derīgs, vai to parakstījis uzticams izdevējs un vai tas aptver Jūsu nosaukumu, un pēc tam pieprasa http://<naam>/, lai redzētu, vai Jūs pāradresējat uz https. Papildus norādiet, kad beidzas Jūsu sertifikāta derīgums un kā Jums ir nokārtota atjaunošana.

Uzdevums Z7.3: https ar derīgu sertifikātu

Tikai pieteiktiem kursa dalībniekiem. Mēs atveram https://<naam>/ un http://<naam>/ kā pārlūkprogramma, no mūsu tīmekļa servera.




To, ko ievadāt, un to, ko atrodam, mēs nesaglabājam. Jūsu pārlūkprogramma atceras Jūsu atbildes un to, vai esat izpildījuši uzdevumu. Ja esat pieteikušies, sadaļā Mani kursi saglabājam tikai to, ka uzdevums bija (gandrīz) pareizs; tur to varat arī dzēst.

Vairāk lasīt

Lūdzu, uzgaidiet…

Iestatiet savus domēnus

Katram domēnam norādiet vārdu serverus, piesaisti hostingam un to, kurš būs turētājs.

Ielādē Jūsu domēnus…