Siirry suoraan sisältöön

Evästeasetukset

Valitse, mitä evästetyyppejä sallit. Voit muuttaa valintaasi milloin tahansa jokaisen sivun alareunassa olevasta kohdasta Evästeasetukset. Tietosuojaseloste

Välttämättömät

Aina käytössä

Tarvitaan sisäänkirjautumiseen, ostoskorin säilyttämiseen ja valintojesi muistamiseen. Nämä ovat aina käytössä.

Mitkä evästeet?
  • weboke_sessie, weboke_klant, weboke_remember: istuntosi ja sisäänkirjautuneena pysyminen
  • weboke_basket: ostoskorisi
  • wkBtwIncl: hintojen näyttäminen verollisina tai verottomina
  • wok_cookies: evästevalintasi, 12 kuukautta

Mittaa, mikä mainos johtaa käyntiin tai tilaukseen, jotta emme maksa mainoksista, joista ei ole hyötyä.

Mitkä evästeet?
  • Google Ads Google Tag Managerin kautta (_gcl_au, _gcl_aw), enintään 90 päivää
  • OpenAI Ads, mainokset ChatGPT-palvelussa
  • wok_aff: minkä kumppanin kautta tulit meille (kumppaniohjelma), 60 päivää

4,6

Maa ja kieli

Jokaisella maalla on oma sivustonsa, jossa on kyseisen maan hinnat ja ALV.

Näytä

https Let's Encryptillä

Moduuli 7: Verkkotunnus, verkkopalvelin ja https · Lukuaika: 12 minuuttia

Tavoite: Tämän oppitunnin jälkeen osaat hakea certbotilla ilmaisen Let's Encrypt -varmenteen nginxille, ohjata http-liikenteen https:ään, tarkistaa automaattisen uusimisen ja ratkaista yleisimmät hakemisen virheet.

Keskeiset käsitteet: varmenne, varmenteen myöntäjä (CA), ACME, Let's Encrypt, verkkotunnuksen validointi, HTTP-01, DNS-01, TLS-ALPN-01, certbot, uusiminen, certbot renew --dry-run, voimassaoloaika, ARI, rate limits, staging, CAA, ohjaus https:ään

Miksi https ja mitä varmenne todistaa

Ilman https:ää kaikki selaimen ja palvelimen välinen liikenne kulkee verkossa salaamattomana: salasanat, lomakkeet, evästeet. Kuka tahansa matkan varrella (julkinen wifi, murrettu reititin) voi lukea tai muuttaa sitä. Siksi selaimet merkitsevät http-sivustot "ei turvallinen" -merkinnällä, ja jotkin toiminnot toimivat vain https:n kautta. Vaultwardenin kaltaiselle salasanaholvillekin (oppitunti 9.4) https on pakollinen.

https käyttää TLS:ää, ja sitä varten palvelimesi tarvitsee varmenteen: todisteen siitä, että tämä avain kuuluu tälle nimelle. Sen allekirjoittaa varmenteen myöntäjä (CA), johon selaimet luottavat. Tavallinen varmenne todistaa vain, että hakija hallitsee verkkotunnusta (verkkotunnuksen validointi). Se ei kerro mitään siitä, kuka olet tai oletko luotettava.

Let's Encrypt on ilmainen CA, joka myöntää vain verkkotunnusvalidoituja varmenteita täysin automaattisesti ACME-protokollan avulla. Palvelimellasi oleva ohjelma (ACME-asiakas) hakee varmenteen, todistaa hallitsevansa nimeä, asentaa varmenteen ja uusii sen ajoissa. Tällä oppitunnilla käytetään certbotia, EFF:n asiakasohjelmaa. Caddyssä (oppitunti 7.4) on sisäänrakennettu ACME-asiakas.

Miten todistat hallitsevasi nimeä?

Let's Encryptillä on kolmenlaisia haasteita (challenges):

HaasteMitenPorttiWildcard (*.example.com)
HTTP-01tiedosto polkuun http://<naam>/.well-known/acme-challenge/80ei
DNS-01TXT-tietue _acme-challenge.<naam>ei mitäänkyllä
TLS-ALPN-01erityinen varmenne näytetään TLS-kättelyn aikana443ei

Tavalliselle VPS:lle, jolla on verkkosivusto, HTTP-01 on yksinkertaisin. Se edellyttää, että:

  • nimi osoittaa A- (ja AAAA-) tietueella palvelimeesi (oppitunti 7.1);
  • portti 80 on auki koko maailmalle, vaikka sivustosi muuten käyttäisi vain https:ää. Let's Encrypt validoi vain portin 80 kautta ja useista paikoista internetissä; näitä osoitteita et voi lisätä palomuuriisi;
  • palvelimesi vastaa samalla tavalla IPv4:n ja IPv6:n kautta. Jos nimellä on AAAA-tietue, Let's Encrypt yrittää ensin IPv6:ta. Se palaa IPv4:ään vain, jos IPv6:lla ei saada yhteyttä lainkaan.

DNS-01 tarvitaan wildcard-varmenteeseen tai silloin, kun palvelimeen ei pääse ulkoa. Silloin ACME-asiakkaan pitää pystyä muuttamaan DNS:ääsi, yleensä DNS-palveluntarjoajasi API-avaimella. Avaimella voi muuttaa koko DNS:ääsi: säilytä sitä yhtä huolellisesti kuin salasanaa.

certbotin asentaminen

certbotin tekijät suosittelevat snapia, koska siinä on aina uusin versio. Debianissa ja Ubuntussa sen voi asentaa myös tavallisesti pakettilähteestä:

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

Jakelun versio on vanhempi, mutta se saa tietoturvapäivitykset aptin kautta (oppitunnit 4.1 ja 4.2), ja se sopii tämän kurssin muuhun sisältöön. Valitse jompikumpi, älä molempia: kaksi asennusta häiritsevät toisiaan uusimisessa.

Varmenteen hakeminen

Kun oppitunnin 7.2 sivusto toimii jo portissa 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

(Päivämäärä ja yksityiskohdat ovat esimerkkejä.) Liitännäinen --nginx tekee kolme asiaa: se valmistelee haasteen tilapäisesti, hakee varmenteen ja muokkaa server blockiasi lisäämällä listen 443 ssl-lohkon ja ohjauksen http:stä https:ään. Jos haluat tehdä sen mieluummin itse, käytä komentoa certbot certonly --nginx ja lisää rivit itse määrityksiisi.

Muutama huomioitava asia:

  • Hae kaikki sivustoon kuuluvat nimet kerralla (-d nimeä kohti). Jokaisen nimen on osoitettava palvelimeen, muuten koko haku epäonnistuu.
  • Yksityinen avain (privkey.pem) on hakemistossa /etc/letsencrypt/live/, ja vain root voi lukea sitä. Älä kopioi sitä muualle äläkä koskaan laita sitä varmuuskopioon, jota muut voivat lukea.
  • Sähköpostiosoite on vapaaehtoinen. Kesäkuusta 2025 lähtien Let's Encrypt ei enää lähetä sähköpostia, kun varmenne on vanhenemassa. Sinun on siis itse valvottava, että uusiminen onnistuu (oppitunti 8.3).

http:n ohjaaminen https:ään

certbotin jälkeen määrityksesi näyttää suunnilleen tältä (siistittynä; certbot lisää itse kommentteja # managed by Certbot ja joskus if-rivejä):

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

Ensimmäinen lohko ohjaa kaiken http-liikenteen samaan nimeen ja samaan polkuun https:n kautta pysyvällä uudelleenohjauksella (301). Uusimisen haastetiedosto toimii edelleen: Let's Encrypt seuraa ohjausta. Toinen lohko on varsinainen sivusto. Jos haluat ohjata myös www pelkkään nimeen (tai päinvastoin), tee se omassa lohkossaan, jotta kävijät näkevät aina saman nimen.

Uusiminen: automaattisesti ja tarkistettuna

Let's Encryptin varmenne on nyt voimassa 90 päivää. Aika lyhenee: Let's Encrypt on ilmoittanut, että oletusprofiili myöntää 10. helmikuuta 2027 alkaen 64 päivän ja 16. helmikuuta 2028 alkaen 45 päivän varmenteita. Käsin uusiminen ei siis ole vaihtoehto; sen on tapahduttava automaattisesti.

Asennuksen yhteydessä certbot luo systemd-ajastimen (tai cron-rivin), joka tarkistaa kahdesti päivässä, pitääkö jokin varmenne uusia. Tarkista, että se on olemassa, ja testaa uusiminen koehaulla:

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)

Uusimisen jälkeen nginxin on myös ladattava uusi varmenne. nginx-liitännäisellä certbot hoitaa tämän itse; jos käytät komentoa certonly, luo deploy hook, joka lataa nginxin uudelleen, esimerkiksi suoritettava skripti hakemistoon /etc/letsencrypt/renewal-hooks/deploy/ sisällöllä systemctl reload nginx.

Hyvät ACME-asiakkaat käyttävät ARI:a (ACME Renewal Information): silloin Let's Encrypt kertoo itse, milloin varmenne pitää uusia, esimerkiksi aiemmin, jos jossakin varmennejoukossa on ongelma. Pidä siksi asiakasohjelmasi ajan tasalla.

Jos haku epäonnistuu

Ilmoitus (lyhennetty)SyyRatkaisu
Timeout during connect (likely firewall problem)portti 80 on kiinni tai nimi osoittaa toiseen osoitteeseenpalomuuri (oppitunti 5.2), A/AAAA (oppitunti 7.1)
Invalid response from http://.../.well-known/acme-challenge/...: 404vastaajana on toinen palvelin tai server block, usein IPv6:n kauttalisten [::]:80, tarkista AAAA-tietue
CAA record for example.com prevents issuanceCAA-tietue sallii vain toisen myöntäjänmuokkaa CAA:ta (oppitunti 7.1)
too many certificates already issuedrate limitodota; testaa stagingilla

Let's Encryptillä on väärinkäytösten estämiseksi rate limits eli määrärajoja. Tärkeimmät: enintään 50 uutta varmennetta rekisteröityä verkkotunnusta kohti 7 päivässä, enintään 5 varmennetta täsmälleen samalle nimijoukolle 7 päivässä ja enintään 5 epäonnistunutta validointia nimeä kohti tunnissa. Jos kokeilet ja haet varmennetta yhä uudelleen, törmäät näihin nopeasti. Testaa siksi staging-ympäristössä, jossa rajat ovat paljon väljemmät mutta jonka varmenteisiin selaimet eivät luota:

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

Kun se toimii siellä, hae oikea varmenne.

AlmaLinuxissa ja Rocky Linuxissa

certbot tulee niissä EPEListä (dnf install certbot python3-certbot-nginx) tai snapina. Liitännäinen ja komennot ovat samat. Muista firewalld (--add-service=http --add-service=https) ja SELinux, jos varmenteet ovat epätavallisessa paikassa.

Käytännössä

Webhotellipaketissa hallintapaneeli hoitaa varmenteen puolestasi (WebOkéllä ja muilla palveluntarjoajilla, joilla on DirectAdmin, cPanel tai Plesk). VPS:llä teet sen itse certbotilla, Caddyllä tai ohjelmistosi mukana tulevalla ACME-asiakkaalla. Tämä pätee kaikilla palveluntarjoajilla.

Yhteenveto

  • Let's Encryptin varmenne todistaa, että hallitset nimeä; certbot hakee, asentaa ja uusii sen ACME:n avulla.
  • HTTP-01 vaatii, että portti 80 on auki kaikille ja että vastaus on sama IPv4:n ja IPv6:n kautta; DNS-01 on wildcardeja varten.
  • certbot --nginx -d ... -d ... hoitaa varmenteen ja ohjauksen https:ään; hae sivuston kaikki nimet kerralla.
  • Varmenteet ovat nyt voimassa 90 päivää, ja aika lyhenee; tarkista ajastin ja certbot renew --dry-run ja valvo vanhenemispäivää itse.
  • Testaa komennolla --staging välttääksesi määrärajat; huomioi CAA.

Tietovisa (quiz)

1. Sivustosi pitää olla saatavilla vain https:n kautta. Saatko sulkea portin 80 palomuurissa, jos käytät HTTP-01:tä?



2. Haluat varmenteen nimelle *.example.com. Minkä haasteen tarvitset?



3. Haku epäonnistuu virheeseen 404 haastetiedostossa, vaikka curl http://example.com/ näyttää sivustosi IPv4:n kautta. Mikä on todennäköisin syy?



4. Miksi automaattinen uusiminen on tärkeämpää kuin koskaan?



5. Kokeilet asioita ja olet tänään hakenut saman varmenteen jo neljä kertaa. Mitä teet seuraavaa kokeilua varten?



Tehtävä

Tehtävä Z7.3: https voimassa olevalla varmenteella. Hae sivustollesi varmenne (certbotilla tai Caddyllä), ohjaa http https:ään ja testaa uusiminen komennolla certbot renew --dry-run (Caddyllä: katso lokeista, että varmenne on haettu). Anna sivustosi nimi. Ohjelma muodostaa TLS-yhteyden porttiin 443 ja tarkistaa, että varmenne on voimassa, luotetun myöntäjän allekirjoittama ja kattaa nimesi, ja pyytää sen jälkeen osoitteen http://<naam>/ nähdäkseen, ohjaatko https:ään. Lisäksi kerrot, milloin varmenteesi vanhenee ja miten uusiminen on järjestetty.

Tehtävä Z7.3: https voimassa olevalla varmenteella

Vain kirjautuneille opiskelijoille. Avaamme osoitteet https://<naam>/ ja http://<naam>/ kuten selain, omalta verkkopalvelimeltamme.




Sitä, mitä kirjoitat ja mitä löydämme, ei tallenneta. Selaimesi muistaa vastauksesi ja sen, oletko suorittanut tehtävän. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että tehtävä oli (lähes) oikein; voit poistaa sen myös sieltä.

Lue lisää

Hetkinen…

Määritä verkkotunnuksesi

Määritä kullekin verkkotunnukselle nimipalvelimet, liitos webhotelliin ja se, kuka tulee omistajaksi.

Ladataan verkkotunnuksia…