Arvutiteaduse instituut
  1. Kursused
  2. 2025/26 sügis
  3. Operatsioonisüsteemid (LTAT.06.001)
EN
Logi sisse

Operatsioonisüsteemid 2025/26 sügis

  • Pealeht
  • Loengud
  • Praktikumid
  • Viited

Praktikum 12 - Rakenduskihi protokollid

Eelmises praktikumis vaadeldud marsruutimine moodustab vundamendi, mille peale on ehitatud rakenduskihi protokollid. Rakenduskihi protokollid on need, mis panevad võrgu tegema reaalselt midagi kasulikku. Praktikumis vaatleme järgmisi protokolle:

  • IP-aadress (IP address)
  • DNS (Domain Name System) – nimelahendus (ehk nimede teisendamine IP-aadressideks ja muu domeeninimega seotud info)
  • TCP (Transmission Control Protocol) - ühendusorienteeritud võrguliiklus
  • HTTP (Hypertext Transfer Protocol) – veeb
  • HTTPS (Hypertext Transfer Protocol Secure) - turvaline veeb

Käesoleva praktikumi tegevusi soovitame sooritada enamasti praktikumi Ubuntu 25.10 virtuaalmasinas, kuid mõne harjutuse juures on soovitatav kasutada ka Widnows 11 virtuaalmasinat või üle SSH ühenduse adalberg.ut.ee serverit.

DNS (domain name system)

Võrgukihi tasemel toimub kõikide arvutite poole pöördumine IP-aadressidega. Hulga numbrite, nagu 193.40.5.67 ja 213.168.24.212 meeles pidamine on inimese jaoks tülikas. Samuti võivad IP-aadressid muutuda ega ole subjektiga sisuliselt seostatavad. Selle lahenduseks ongi välja mõeldud nimesüsteem, mis võimaldab vastavate arvutite poole pöörduda nimedega mail.ut.ee või www.err.ee.

Staatilised nimed

Algne viis nimedega teiste arvutite poole pöördumiseks oli kirjutada kõik teadaolevad nimed ja aadressid /etc/hosts-faili (Windowsi all C:\Windows\System32\drivers\etc\hosts).

Käivitage Ubuntu virtuaalmasin ja tutvuge /etc/hosts) faili sisuga. Täiendavalt kirjutage sinna järgmine rida (peale 127.0.1.1 perenimi25 rida):

193.40.5.73  www.libasait.ee

Nüüd avage veebilehitseja (näiteks Firefoxis) aadress www.libasait.ee (või http://www.libasait.ee ) aadress sisestades hoopis www.ut.ee . Hosts-faili ülekirjutamist kasutavad mõned viirused ja pahavarad, et tuntud lehekülgi (nt www.swedbank.ee) oma serverisse suunata.

Nimelahendus

Kõikide maailma arvutite üleslugemine hosts-failis pole reaalne (need ka ajas muutuvad). Seetõttu ongi DNS protokoll, mille abil on võimalik serveri käest küsida nimele vastavat IP-aadressi. Nimele vastava IP-aadressi leidmist kutsutakse nime lahendamiseks (resolving a name, name resolution), vastavat serverit nimeserveriks. Süsteemi nimeserveri aadress on seadistatud failis /etc/resolv.conf. Tutvuge enda Ubuntu resolv.conf faili sisuga.

alo@peets25:~$ cat /etc/resolv.conf

Nimeserveri enda aadress tuleb loomulikult anda IP-aadressina, mitte nimena. Antud juhul on Ubuntus seadistatud nimeserveriks 127.0.0.53 aadress, kus teadjamale tudengile loodetavasti viitab numbes 127, et tegu on arvuti sisese aadressi ehk ümbersuunamisega. Lugedes teksti leiategi, et uuemates Linuxites tegeleb DNS teenusega systemd-resolved, mille seadistust näete käsuga resolvectl status.

alo@peets25:~$ resolvectl status
Global
         Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
  resolv.conf mode: stub

Link 2 (enp0s3)
    Current Scopes: DNS
         Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 193.40.5.39
       DNS Servers: 193.40.5.39 193.40.5.76
        DNS Domain: eduroam.ut.ee
     Default Route: yes

Õppejõu näites, kasutab arvuti TÜ DNS servereid aadressitel 193.40.5.39 ja 193.40.5.76 , mis vajadusel edastavad päringud järgmistele nimeserveritele. Seadistus search või DNS domain määrab ära domeeni, mida püütakse liita lahendatava nime lõppu, kui esialgse nime lahendamine ei õnnestu.

Nimelahenduse testimiseks on abiks käsk nslookup:

alo@peets25:~$ nslookup www.ut.ee
Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
Name:	www.ut.ee
Address: 141.101.90.17
Name:	www.ut.ee
Address: 141.101.90.16
Name:	www.ut.ee
Address: 2a06:98c1:3200::6
Name:	www.ut.ee
Address: 2a06:98c1:3200::7

alo@peets25:~$ nslookup www.ut.ee 193.40.5.39
Server:		193.40.5.39
Address:	193.40.5.39#53

Name:	www.ut.ee
Address: 141.101.90.17
Name:	www.ut.ee
Address: 141.101.90.16
Name:	www.ut.ee
Address: 2a06:98c1:3200::7
Name:	www.ut.ee
Address: 2a06:98c1:3200::6

Kahe eelneva päringu erinevus seisneb selles, et esimene sisaldab rida Non-authoritative answer: ning kui küsime vastuse otse ametlikult TÜ serverilt seda rida me vastuses ei näe.

DNS-süsteemis on võimalik nime tähistada ka aliasena, s.t lahendada nimi samaks IP-aadressiks nagu see teine nimi.

alo@peets25:~$ nslookup mail.ut.ee
Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
mail.ut.ee	canonical name = mailhost.ut.ee.
Name:	mailhost.ut.ee
Address: 193.40.5.66
Name:	mailhost.ut.ee
Address: 193.40.5.67
Name:	mailhost.ut.ee
Address: 2001:bb8:2002:500::46
Name:	mailhost.ut.ee
Address: 2001:bb8:2002:500::47

Antud vastus ütleb, et mail.ut.ee kanooniline nimi (põhinimi) on mailhost.ut.ee ning mailhost.ut.ee-l on kaks võimalikku aadressi: 193.40.5.66 ja 193.40.5.67. Nendest võib kasutada ükskõik kumba, mitme aadressi omistamist samale nimele kasutatakse koormuse jaotamise ja tõrkekindluse suurendamise eesmärgil. Vaata näiteks, mitu IP-aadressi on www.ubuntu.com aadressil.

Nimekirjed

DNS-andmebaasis hoitakse lisaks IP-aadressidele ka mitmesugust muud infot domeenide kohta:

A
nimele vastav IP-aadress (IPv4 kohta)
AAAA
nimele vastav IP-aadress (IPv6 kohta)
NS
domeeni nimeserver
CNAME
tegemist on aliasega, tuleb lahendada samamoodi nagu see teine nimi (kanooniline nimi)
MX
domeeni e-postiserver (mail exchanger)
TXT
vaba tekstiline kirjeldus (alamväärtus SPF:spämmi vastu võitlemise jaoks vajalik info)

Täieliku nimekirja DNS-kirjete tüüpidest leiab siit.

Näiteks domeeni e-postiserveri küsimine nslookupiga interaktiivses režiimis saab toimuda nii (NB! sisesta ainult domeen ilma www või mõne muu prefixita):

alo@peets25:~$ nslookup
> set type=MX
> server 193.40.0.12
Default server: 193.40.0.12
Address: 193.40.0.12#53
> ut.ee
Server:		193.40.0.12
Address:	193.40.0.12#53

Non-authoritative answer:
ut.ee	mail exchanger = 5 ut-ee.mail.protection.outlook.com.

Authoritative answers can be found from
> exit

või käsurea parameetritena:

nslookup -type=mx ut.ee 193.40.0.12

Eelnevast võib välja lugeda, et domeeni ut.ee ametlikud e-postiserver on ut-ee.mail.protection.outlook.com, kusjuures number 5 vastuses tähistab prioriteeti. Allpool olevad kirjed tähistavad domeeni ut.ee nimeservereid, kelle käest saab autoriteetse (lõpliku, kindla) vastuse päringule, sest praegune vastus on vahendatud mõne teise serveri poolt (Authoritative answers can be found from, mis meil on tühi vastuses).

Eelnevas kasutasime DNSi testimiseks nslookup-käsku, kuna see on olemas ka Windowsis. Linuxis (k.a. serveris adalberg.ut.ee) on veel sarnase väljundiga käsud host ja dig.

alo@peets25:~$ dig MX ut.ee @193.40.0.12

; <<>> DiG 9.20.11-1ubuntu2.1-Ubuntu <<>> MX ut.ee @193.40.0.12
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52492
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;ut.ee.				IN	MX

;; ANSWER SECTION:
ut.ee.			1796	IN	MX	5 ut-ee.mail.protection.outlook.com.

;; Query time: 2 msec
;; SERVER: 193.40.0.12#53(193.40.0.12) (UDP)
;; WHEN: Sun Nov 23 20:27:26 EET 2025
;; MSG SIZE  rcvd: 83
alo@peets25:~$ dig www.ut.ee @1.1.1.1

; <<>> DiG 9.20.11-1ubuntu2.1-Ubuntu <<>> www.ut.ee @1.1.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17167
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; EDE: 18 (Prohibited)
;; QUESTION SECTION:
;www.ut.ee.			IN	A

;; ANSWER SECTION:
www.ut.ee.		1611	IN	A	141.101.90.17
www.ut.ee.		1611	IN	A	141.101.90.16

;; Query time: 6 msec
;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP)
;; WHEN: Sun Nov 23 20:27:56 EET 2025
;; MSG SIZE  rcvd: 76

Vahepeal tekib ka küsimus, et on vaja teada, millisele nimele mis IP-aadress vastab. Selleks võib kasutada avalikku internetiotsingut (nn whois-otsing, näiteks paar aastat aastat tagasi uudistes olnud IP-aadressi info https://ipinfo.io/193.40.226.194) või käsku host 193.40.226.194. Aeg-ajalt on vaja teada ka, milliseid nimeservereid mingi domeen kasutab. TÜ nimeserverid leiab näiteks käsuga nslookup -type=NS ut.ee 8.8.8.8, kus NS ütleb, et küsime nimeserverit (NameServer), ja 8.8.8.8 on Google'i levinuim avalik DNS-serveri IP-aadress (nagu 1.1.1.1 või 193.40.0.12 eelnevates näidetes).

alo@peets25:~$ nslookup
> set type=NS
> server 193.40.0.12
Default server: 193.40.0.12
Address: 193.40.0.12#53
> ut.ee
Server:		193.40.0.12
Address:	193.40.0.12#53

Non-authoritative answer:
ut.ee	nameserver = ns2.eenet.ee.
ut.ee	nameserver = ns.ut.ee.
ut.ee	nameserver = ns2.ut.ee.

Authoritative answers can be found from:
ns2.ut.ee	has AAAA address 2001:bb8:2002:500::76
ns.ut.ee	internet address = 193.40.5.99
ns2.ut.ee	internet address = 193.40.5.76
> exit

Või käsurea parameetritena:

nslookup -type=ns ut.ee 193.40.0.12

TCP (transmission control protocol)

Kui DNS põhines esmasena paketipõhisel UDP-transpordiprotokollil, siis järgnevad protokollid on voopõhised ja baseeruvad TCP transpordiprotokollil. Voopõhine protokoll tähendab seda, et luuakse ülemisele kihile toru kahe arvuti vahel, kus ühest otsast lükkad andmeid sisse ja teisest võtad välja. TCP tegeleb andmevoo jagamisega pakettideks, nende saatmise ning teises otsas õiges järjekorras kokkupanemisega, kaotsi minemisel uuesti saatmisega, saatmiskiiruse reguleerimisega (nt võrgus võivad olla ummistused või pudelikaelad) jms.

Et kahe arvuti vahel saaks olla rohkem kui üks ühendus, tuleb neid kuidagi eristada. Selleks kasutatakse pordi mõistet. Serveriteenustel on kindlaks määratud numbritega vaikimisi pordid, nt http on 80, https 443, smtp 25, ssh 22 jne. Kõikide teenuste nimekirja koos neile vastavate portide numbritega leiab /etc/services-failist (serveri teenust on võimalik ka mitte vaikimisi pordil tööle panna, aga siis peab õige pordi teenuse kliendile ette andma).

NB! Antud port tähistab serveri porti, klient võib serveriga ühenduda mistahes pordilt! Ühe serveri pordiga võib olla mitu ühendust mitmest erinevast arvutist või ka mitmest sama arvuti erinevast pordist ehk unikaalne peab olema komplekt <serverarvuti aadress, serverarvuti port, klientarvuti aadress, klientarvuti port>.

Aktiivsete võrguühenduste nimekirja näitab käsk netstat. Kui seda pole tänapäeval vaikimisi installitud, saab netstati paigaldada koos muude võrgutööriistadega net-tools-pakist (NB! adalberg.ut.ee-serveris on teil tarkvara juba olemas ja seal te seda käsku sisestada ei saa, kuna puuduvad sudo-õigused):

sudo apt install net-tools

Alternatiivina võib kasutada ka programmi ss, mis on tänapäeval netstati asendajaks – süntaks on sama, väljund erineb veidi paigutuselt. Näiteks võite kasutada käske ss -tr või ss -trpi.

Käesoleva harjutuse sooritamiseks kasutame seekord ssh-ühenduse vahendusel adalberg.ut.ee serverit. SSH-ühendust saate Windows-keskkonnas mugavalt luua programmiga putty: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html (Täitke ära avaaknas Session ainult Host Name (or IO address) väärtusega adalberg.ut.ee . Pärast Open vajutamist küsitakse teilt TÜ kasutajatunnust ja parooli. Linuxi ja MACi kasutajad saavad kasutada sisse ehitatud SSH-klienti käsurea käsuga ssh TÜkasutaja@adalberg.ut.ee.). NB!: kui ühendud väljaspoolt Ülikooli sisevõrku, siis pead panema püsti VPN-tunneli, millest oli juttu esimeses praktikumis). See kehtib 2025 aastal ka arvutiklassi 2003 ja seal oleva WiFi (Andmeturve-2GHz, Andmeturve-5GHz) kohta, mis on isoleeritud TÜ põhivõrgust.

Kui saate veateate No supported authentication methods available (server sent: publickey), siis te peate kontrollima oma VPN ühendust, sest adalberg lubab ühendusi ainult turvatud TÜ sisevõrgust.

Näiteks kõiki aktiivseid TCP ühendusi (-t-võti tähistab TCPd ja -n asendab nimekuju numbrilise kujuga (IPdega)) saab vaadata nii:

adalberg:~> netstat -t -n
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 193.40.37.95:445            172.17.143.152:55020        ESTABLISHED
tcp        0      0 193.40.37.95:445            172.17.141.71:61540         ESTABLISHED
tcp        0      0 193.40.37.95:53838          193.40.5.42:389             ESTABLISHED
tcp        0     64 193.40.37.95:22             176.46.20.75:55812          ESTABLISHED
tcp        0      0 193.40.37.95:445            172.17.29.197:57163         ESTABLISHED
tcp        0      0 193.40.37.95:445            172.17.141.138:51470        ESTABLISHED
tcp        0      1 193.40.37.95:22             103.45.128.242:43776        LAST_ACK
tcp        0      0 193.40.37.95:445            172.17.141.12:49203         ESTABLISHED
tcp        0      0 193.40.37.95:445            172.17.141.131:60737        ESTABLISHED
tcp        0      0 193.40.37.95:445            172.17.37.78:57462          ESTABLISHED

Millistel portidel võetakse vastu serveripoolseid ühendusi (-l-võti tähistab kuulatavaid (listen) porte):

adalberg:~> netstat -tl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State    
tcp        0      0 127.0.0.53:domain       0.0.0.0:*               LISTEN   
tcp        0      0 0.0.0.0:smtp            0.0.0.0:*               LISTEN   
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN   
tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN   
tcp        0      0 0.0.0.0:41573           0.0.0.0:*               LISTEN   
tcp        0      0 0.0.0.0:34751           0.0.0.0:*               LISTEN   
tcp6       0      0 [::]:35023              [::]:*                  LISTEN   
tcp6       0      0 [::]:35811              [::]:*                  LISTEN   
tcp6       0      0 [::]:smtp               [::]:*                  LISTEN   
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN   
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN   
tcp6       0      0 [::]:zabbix-agent       [::]:*                  LISTEN   

Käsk telnet loob kõige puhtamal kujul TCP-ühenduse etteantud pordiga ja võimaldab TCP-põhiseid teenuseid lihtsasti testida.

Aktiivseid kasutajaid ja ühendusi näeb Linux serverites ka käsuga who, kus on samuti teie kasutajatunnus ja ühendusel kasutatav IP aadress tuvastatav.

adalberg:~> who
kasutajaX pts/0        2024-11-18 10:54 (2001:bb8:2002:2600:845e:37fe:71e2:2992)
kasutajaY pts/1        2024-11-18 10:20 (2001:bb8:2002:40::f)
alop     pts/2        2024-11-18 10:03 (172.17.156.159)
kasutajaZ pts/3        2024-11-18 10:06 (172.17.156.218)
userX pts/4        2024-11-18 10:09 (2001:bb8:2002:98:35ae:2cbc:d12:1a71)

Ülesanne:Sisesta käsk who adalberg.ut.ee SSH serveris. Leia ka netstat-käsu väljundist enda ssh-ühenduse info, selleks võib esmalt väljundit piirata meile huvi pakkuvate portidega: netstat -n -W | grep :22 . Seejärel peaksid avaliku serveri puhul minema lehele https://www.whatismyip.com/ või mõnele sarnasele, mis näitab ära sinu arvuti avaliku IP-aadressi. Nende tudengite puhul, kes lahendavad ülesannet TÜ sisevõrgust (kõik tudengid, sest adalberg pole mugavalt välisvõrgust saadaval), on netstat-käsu väljundis nähtav tegelik arvuti IP-aadress (TÜ sisevõrgu aadress), mitte avalik. Selle leiab külastades aadressi https://ip.ut.ee/

Lahenduseks esitage ekraanivaade, kus on adalberg.ut.ee serveris näha who käsu väljund, netstat -n -W | grep :22 väljundis on teie IP-le vastav rida esile tõstetud ning samal ekraanivaatel on näha ka teie enda arvuti IP aadress (näiteks leheküljel https://ip.ut.ee ). Salvestage pilt enda arvutisse ja laadige hiljem üles moodle testi vastava harjutuse juurde.

adalberg.ut.ee SSH serveris katsetage ka mtr käsku, mis eelmises praktikumis ei töötanud päris nii nagu oleksime soovinud. Selleks sisestage näiteks käsk mtr -b www.studyinestonia.ee ja uurige väljundit. Seal peaks kenasti olema näha erinevad olulisemad hüpped paketi teel soovitud serverini. Võime tuvastada:

  • sein.ut.ee ehk TÜ tulemüüri
  • ...eenet.ee Tallinna gateway (gw)
  • tele2 ruuterid
  • Zone serverid, kus ka vastav veebileht arvatavasti majutatud on.

HTTP (hypertext transfer protocol)

HTTP on protokoll veebilehtede (hüperteksti dokumentide) ja nendega seotud failide allalaadimiseks Internetist. Lihtsaim HTTP-päring on järgmine (päisekäskude sisestamise järel vajuta veel korra Enter-nuppu, kuna nende käskude saatmiseks peab päise järel olema tühi rida):

GET / HTTP/1.0
  • GET – tähistab siin meetodit, et soovime saada (alla laadida) dokumenti. Alternatiivid on POST, HEAD, DELETE jne, aga neid detaile me siin ei vaata.
  • / – dokumendi või faili teekond, antud juhul juurkataloog. (Väärtus peaks olema /alamleht, kui on soov mingit alamlehekülge pärida.)
  • HTTP/1.0 – kliendi poolt toetatud protokolli versiooni tähis, võib olla ka uuem HTTP/1.1.

Kui seda käsklust rakendada eys.ee peal, siis saame järgmise tulemuse:

alo@peets25:~$ telnet eys.ee 80
Trying 163.172.73.201...
Connected to eys.ee.
Escape character is '^]'.
GET / HTTP/1.0

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Sun, 23 Nov 2025 18:51:11 GMT
Content-Type: text/html
Content-Length: 162
Connection: close
Location: https://eys.ee/
X-Frame-Options: sameorigin
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Content-Security-Policy: default-src https: data: 'unsafe-inline' 'unsafe-eval'
Referrer-Policy: strict-origin

<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>
Connection closed by foreign host.

Vastuse esimene rida:

  • HTTP/1.1 – serveri protokolli versioon.
  • 301 – ümbersuunamise kood, teisi koode vaata siit.
  • Moved Permanently – päringu staatuse tekstiline kirjeldus.

Järgnevatel ridadel on päised kujul nimi: väärtus, millele järgneb tühi rida ning siis dokumendi sisu ise. Päised annavad mitmesugust metainfot serveri ja dokumendi kohta, nt serveris kasutatava tarkvara, dokumendi tüübi, dokumendi suuruse, viimase muutmise aja kohta jne.

Antud juhul on dokumendi sisu HTMLis link ümbersuunamiseks neile veebilehitsejatele, mis päises olevat ümbersuunamist ignoreerivad. Ümbersuunamise põhjuseks on see, et server soovib, et me kasutaks turvalist https-ühendust http asemel. https-päringud on aga keerulisemad ja neid me hetkel ei käsitle.

Vaatame juhtumit, et me sooviksime pärida mõnda alamlehekülge mõnelt kodulehelt, selleks täiendame päringut / asemel nüüd ka kohe õige alamlehe aadressiga GET-reas: /demo. Täiendavalt peame lisama ka Host:-parameetri, sest server, mida kasutame, oslab2.appspot.com, teenindab mitmeid alamlehti ja teenuseid sama IP-aadressi pealt ning muidu ei tea server, millisele alamlehele soovime päringut koostada. Kokku näeb päring aadressile oslab2.appspot.com/demo välja järgmine:

alo@peets25:~$ telnet oslab2.appspot.com 80
Trying 142.251.38.84...
Connected to oslab2.appspot.com.
Escape character is '^]'.
GET /demo HTTP/1.1         
Host: oslab2.appspot.com

HTTP/1.1 200 OK
content-type: text/html; charset=utf-8
vary: Accept-Encoding
x-cloud-trace-context: 18b2941f96ce1a37bd3877eba98f54ac;o=1
date: Sun, 23 Nov 2025 18:54:01 GMT
server: Google Frontend
Content-Length: 116


        <h2>Nothing to see here, look deeper!</h2>
        <!-- Sala kood (vastus küsimusele): kartul -->

Kui ühendus ei katke automaatselt saate selle katkestada CTRL+C klahvikombinatsiooniga.

Tulemuseks ongi see HTML- (või muud tüüpi) dokument, mida veebibrauser näitab.

HTTPS

Ajalooliselt kulges suur osa veebiliiklusest krüpteerimata kujul (HTTP, FTP jne vahendusel) ning oli seetõttu pealtkuulatav. Mõnikord pole krüpteerimist vajagi, sest näiteks uudisteportaalid või Vikipeedia jagavad avalikku infot, mida ehk ei ole vaja varjata. Samas ei taga HTTP kasutamine sisu terviklikkust, mistõttu te ei saa olla kindlad, et info, mis teie ekraanile jõudis, on autentne või on keegi vahepeal pakettide sisu muutnud. Uudisteportaalis olev sisu pole salajane, aga samas saaks aktiivne ründaja, kes kontrollib pakettide liikumise mingit punkti, muuta soovi korral artiklite sisu (nt internetiteenusepakkuja).

Suuremad probleemid tekivad siis, kui turvalisus ja privaatsus muutub oluliseks - näiteks krediitkaardi või e-tervise infosüsteemi kasutamisel. Transpordikihi turbeprotokolli TLS (Transport Layer Security, varasemalt turvasoklite kihti (Secure Sockets Layer, SSL)) kasutatakse sõnumite krüpteerimiseks suhtluskanali otspunktide vahel.

TLS pakub:

  • andmete konfidentsiaalsust
  • serveri autentimist sertifikaadi abil
  • andmete terviklust ja andmete autentimist
  • (kliendi autentimist kliendisertifikaadi abil)
  • (Perfect Forward Secrecy ehk PFS)

TLS kasutab andmeside konfidentsiaalsuse tagamiseks hübriidsüsteemi, mis kasutab nii sümmeetrilist kui ka asümmeetrilist krüpteerimist. Sümmeetrilist krüpteerimist läheb vaja selleks, et pakettides olevaid andmeid kaitsta. Samas ei saa ainult sümmeetrilist krüpteerimist kasutades lahendada võtmejagamise probleemi. Asümmeetrilist ehk avaliku võtme krüptograafiat lähebki vaja selleks, et näiteks veebiserver ja brauser saaksid omavahel kokku leppida AES võtme. Ainult avaliku võtme krüptograafiast ei piisaks, sest see on liiga aeglane kogu andmevahetuse krüpteerimiseks. Oluline on, et TLS krüpteerib võrguühenduste segmente transpordikihis suhtluskanali otspunktides (näiteks veebiserveri ja brauseri vahel) ja pakette edastavatel osapooltel pole reaalselt võimalik liiklust dekrüpteerituna näha.

Avaliku võtme krüptograafia lahendab küll võtme jagamise probleemi, aga kohe tekib uus probleem. Kuidas on võimalik kindlaks teha, kellele vastav avalik võti kuulub? Selle probleemi lahendamiseks kasutatakse sertifikaate ja sertifitseerimiskeskuseid ehk avaliku võtme infrastruktuuri (PKI). Sertifikaat seob ära avaliku võtme ja võtme omaniku. Avalik võti võib kuuluda näiteks veebilehele (HTTPS kasutamise korral), aga ka eraisikule (näiteks ID-kaardi / Mobiil-ID). Niisugust sertifikaati on võimalik ise genereerida, aga see ei kaota usalduse probleemi, sest kolmandad isikud ei saa kindlaks teha, kas sertifikaadis olev info vastab tõele või on võltsitud. Selle probleemi lahendamiseks kasutatakse kolmandaid usaldatud osapooli ehk sertifitseerimiskeskuseid (CA - certificate authority), kes allkirjastavad sertifikaate ning kinnitavad, et vastav avalik võti kuulub sertifikaadis kirjeldatud isikule / asutusele. CA-d on enamasti vaikimisi operatsioonisüsteemi või veebilehitsejatega kaasas ning nende nimekirja uuendatakse regulaarselt koos tarkvara muude uuendustega. Selleks, et avaliku võtme infrastruktuur toimiks, peab teie operatsioonisüsteem või brauser usaldama tipmisi sertifitseerimiskeskuseid (CA). Uurige enda veebilehitseja seadistust, kui teid huvitab, missuguseid sertifitseerimiskeskusi vaikimisi brauser usaldab.

Kõik, mis on krüpteeritud avaliku võtmega, on dekrüpteeritav ainult vastava salajase võtmega ja vastupidi. Salajase võtmega krüpteerimist nimetatakse ka signeerimiseks ehk digi-allkirjastamiseks. Kui server saadab veebilehitsejale enda sertifikaadi, mis on krüpteeritud serveri enda salajase võtmega, siis seda sertifikaati nimetatakse enda signeeritud (self-signed) sertifikaadiks. Kuna allkirja kontrollimiseks tuleb kasutada vastavat avalikku võtit, siis pannakse see sertifikaadiga kaasa. Kui pöördute serveri poole, millel on sertifikaat, kuid mis ei ole allkirjastatud usaldusväärse CA poolt, siis on võrguliiklus küll krüpteeritud, kuid te võite suhelda osapoolega, kes ei ole see, kes väidab end olevat.

Siiski on ka enda signeeritud sertifikaadid kasutatavad olukorras, kus soovite krüpteerida andmesidet enda poolt ülesseatud veebiserveriga. Teie enda poolt allkirjastatud sertifikaadi kasutamisel kuvab brauser hoiatuse ning te peate sertifikaadi brauseris käsitsi kinnitama. Enda signeeritud sertifikaadi kasutamine usaldusväärse CA poolt väljaantud sertifikaadi asemel on tänapäeval pigem haruldane. Varasemalt kasutati seda võimalust, sest CA-de teenused on üldjuhul tasulised ning ei olnud tasuta alternatiivi. Nüüdseks saab https://letsencrypt.org/ kaudu hankida tasuta sertifikaadi, mida usaldavad enamik veebilehitsejaid.

Sertifikaatide infot näeb veebilehitsejas aadressi ees olevale märgile vajutades ja sealt valides Security või Certificates jne olenevalt veebilehitseja versioonist. Käsurealt näeb sertifikaadi infot käsuga openssl, kus näidiskäsu teine variant on inimloetavamal kujul:

openssl s_client -connect google.com:443 -showcerts
openssl s_client -connect google.com:443 -showcerts | openssl x509 -text -noout

HTTP protokolli käsurealt uurimine on pigem tülikas ja praktikas on levinum kasutada veebilehitsejasse sisse ehitatud More Tools -> Developer Tools või Web Developer Tools vaadet ja funktsionaalsust. Näiteks Network vaheleht näitab meile kenasti ümbersuunamiste ja veebilehe poolt tekitatud võrguliikluse infot (milliseid päringuidtehtis, vastuseid neile ja faile mida alla laeti ning kui kaua).

Esitada:

Praktikumi eduka lahendamise tõestsueks tuleb lahendada moodle keskkonnas pool-automaatselt hinnatav test, kus iga tudeng saab endale personaliseeritud küsimused.

https://moodle.ut.ee/mod/quiz/view.php?id=1454723

GitHub või GitLab leheküljele seekrod midagi esitama ei pea. (Tähtaeg 2 nädalat)

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused