Lekcija 1: Šta su SSL sertifikati

Ako ste nedavno ažurirali Google Chrome, verovatno ste primetili da su neki sajtovi koje redovno posećujete odjednom postali Not Secure.

Ako ste administrator ili vlasnik sajta, onda ste to morali da primetite, ali možda ne znate zašto se to dešava?

 

Dakle, radi se o novoj verziji Google Chromea, verziji 68, za koju je specifično to da su SVI sajtovi koji koriste HTTP protokol obeleženi sa Not Secure!

Not Secure nije baš dobar znak, iako sajt možda ne predstavlja pretnju po privatnost ili bezbednost. Istraživanja pokazuju da više od 80% Internet korisnika neće nastaviti da koristi sajt koji je obeležen kao Not Secure. 

 

S druge strane, u Chromu neki sajtovi imaju oznaku Secure. 

 

Da bi zaslužili tu oznaku, sajtovi moraju da koriste HTTPS protokol.

 

Šta znače HTTP i HTTPS i kako izbeći negativne indikatore?

 

 

Šta je HTTP i zašto su takvi sajtovi nebezbedni?

 

HTTP, kraće od hypertext transfer protokol, je mrežni protokol – kanal komunikacije između klijenta i servera i dugo je predstavljao osnovni metod prenosa informacija na internetu. 

 

Kako se broj korisnika interneta povećavao i kako je Internet postao sve važniji u poslovanju i svakodnevnom životu, tako su informacije koje se razmenjuju putem interneta postale osetljivije, vrednije. I tu nastaju problemi sa HTTP protokolom.

 

HTTP protokolom se informacije između klijenta i servera prenose kao otvoren tekst (plain ili clear text), odnosno nisu kriptovane. To znači da ukoliko neko presretne komunikaciju između klijenta i servera može da pročita informacije. 

HTTP protokol

 

Znači, ne dolazi u obzir da se informacije kao što su brojevi kreditnih kartica, broj računa, log-in podaci, JMBG razmenjuju preko HTTP-a. Kako onda da se razmenjuju?

 

Preko HTTPS-a!

 

Šta je HTTPS?

 

HTTPS, odnosno HTTP Secure (S je za Secure) dodaje enkripciju u HTTP komunikaciju. Poruka, tj. informacija koju razmenjuju browser i server je kriptovana, tako da ako neko presretne komunikaciju, ne može da pročita informacije, jer poruka izgleda kao nasumičan skup slova i brojeva. Podatke koji se razmenjuje može da pročita samo neko ko ima odgovarajući kriptografski ključ.

http vs https

Komunikacija se kriptuje preko TLS (Transport Layer Security), odnosno SSL (Secure Socket Layer) kriptografskih protokola. Iako ćete češće čuti SSL, danas se koristi TLS, ali se izraz SSL više odomaćio.

 

HTTPS obezbeđuje bezbedan kanal komunikacije na NEbezbednoj mreži. Izuzetno važno za javne Wifi mreže.

 

Ovo je važno da zapamtite:

Iako S u HTTPS znači Secure, HTTPS ne znači da je sajt bezbedan, nego samo da je kanal komunikacije bezbedan, ili preciznije kriptovan! Sajt i dalje nije zaštićen od SQL injection, cross site scripting i drugih napada. Za zaštitu web sajta vam trebaju druga rešenja. HTTPS je dakle jedan korak više ka bezbednosti sajta, ali ne znači da je sajt potpuno bezbedan.

 

 

Glavna svrha HTTPS je:

  1.      Privatnost i integritet razmene podataka
  2.      Autentifikacija

 

Privatnost i integritet podataka znače da niko ne može da pročita poruke, niti da ih izmeni u toku razmene, jer su kriptovane. 

 

Autentifikacija znači da je server odnosno sajt baš onaj za koji se predstavlja. 

 

Kako browser zna da je HTTPS sajt autentičan? Tako što sajt koji koristi HTTPS mora da ima SSL/TLS sertifikat, nešto kao ličnu kartu ili putnu ispravu, koji garantuje autentičnost.

Autentifikacija

I enkripcija i autentifikacija se ostvaruju pomoću SSL sertifikata

 

 

Šta je SSL sertifikat?

 

SSL sertifikat je digitalni sertifikat koji služi za uspostavljanje bezbedne, kriptovane, HTTPS komunikacije između servera i browsera.

 

SSL sertifikate izdaju sertifikaciona tela, na zahtev vlasnika sajta. 

 

Zahtev za sertifikat (Certificate Signing Request - CSR) je kriptovani tekst koji se obično generiše na serveru na koji se planira instalacija SSL sertifikata. CSR sadrži podatke o sajtu i vlasniku sajta. U CSR se upisuje domen, odnosno common name (hostname), naziv firme koja je vlasnik sajta, grad i država. Taj deo je bitan za autentifikaciju, odnosno utvrđivanje identiteta.

 

Drugi deo CSR-a je enkripcija. Prilikom generisanja CSR-a kreira se i par ključeva: privatni i javni. Privatni ostaje na serveru, a javni se šalje sertifikacionom telu. 

Ono što je ovde važno je da samo privatni ključ može da otključa poruku koja je kriptovana odgovarajućim javnim ključem.

 

Znači, javni zaključava – privatni otključava, to je tzv. asimetrična enkripcija.

Asimetrična enkripcija

Sertifikaciono telo proverava podatke iz zahteva za sertifikat i ukoliko utvrdi da su tačni, izdaje SSL sertifikat na određeni vremenski period (trenutno je moguće na jednu ili dve godine). 

 

SSL sertifikat se instalira na server i HTTPS kanal komunikacije sa browserom se uspostavlja.

 

Komunikacija između servera koji ima SSL sertifikat i browsera izgleda ovako:

ssl handshake

  1. Server šalje browseru svoj javni ključ.  
  2. Browser proverava da li je javni ključ dobar (da li ga je izdalo pouzdano sertifikaciono telo, da li je važeći, tj. da nije istekao), a onda koristi taj isti ključ za kriptovanje sesijskog ključa.
  3. Server pomoću svog privatnog ključa (koji samo on ima) dekriptuje sesijski ključ.
  4. Sesijskim ključem se kriptuju i dekriptuju poruke između servera i browsera. (Da bi komunikacija bila dvosmerna, enkripcija mora da bude simetrična). Ovo omogućava bezbedan kanal jer samo browser i server znaju simetrični sesijski ključ, a sesijski ključ se koristi samo za tu konkretnu sesiju.
  5. Za svaku sesiju kreira se jedinstveni ključ. Ako se browser ponovo povezuje sa serverom istog dana, kreira se novi sesijski ključ.

 

Dakle SSL sertifikat ima dve funkcije:

  1.      Kriptovanje podataka
  2.      Autentifikaciju, tj. verifikaciju

  

Da li svi sajtovi treba da i moraju da imaju SSL sertifikat?

 

To je diskutabilno, ali je činjenica da browser vendori, pre svega Google, insistiraju na HTTPS-u, tako da ako ne želite da posetiocima sajta izlazi upozorenje da vaš sajt nije bezbedan, moraćete da instalirate SSL sertifikat.