Sobes.tech
Junior

Kako možete zaštititi svoje podatke pomoću HTTPS protokola?

sobes.tech АИ

Одговор од АИ

HTTPS koristi protokol SSL/TLS za obezbeđivanje sigurne veze između klijenta i servera. To se postiže pomoću tri glavna mehanizma:

  1. Šifrovanje: Svi preneti podaci su šifrovani, što ih čini nečitljivim za napadače koji presreću saobraćaj. Koriste se algoritmi simetričnog i asimetričnog šifrovanja.
  2. Integritet podataka: HTTPS garantuje da podaci nisu menjani tokom prenosa. Za to se koriste funkcije za heširanje. Ako su podaci menjani, suma prilikom prijema neće odgovarati onoj od pošiljaoca.
  3. Autentifikacija: Klijent proverava autentičnost servera pomoću digitalnog sertifikata koji izdaje pouzdani sertifikacioni centar (CA). Ovo sprečava napade tipa Man-in-the-Middle.

Prilikom uspostavljanja HTTPS veze, dešava se rukovanje (handshake):

  • Klijent i server se dogovaraju o verziji SSL/TLS i skupovima šifri.
  • Server šalje klijentu svoj digitalni sertifikat.
  • Klijent proverava sertifikat (autentičnost CA, validnost, usklađenost sa domenom).
  • Klijent generiše sesijski ključ, šifruje ga javnim ključem servera (iz sertifikata) i šalje serveru.
  • Server dešifruje sesijski ključ svojim privatnim ključem.
  • Nakon toga, sav saobraćaj između klijenta i servera šifruje se pomoću tog sesijskog ključa.

Primer korišćenja HTTPS u Ruby on Rails:

U produkcionom okruženju, Rails automatski preusmerava HTTP zahteve na HTTPS kada je konfiguracija web servera (Nginx, Apache) ispravna:

# config/environments/production.rb
# Prisiljava sav pristup aplikaciji preko SSL-a, koristi Strict-Transport-Security i sigurne kolačiće.
config.force_ssl = true

Na nivou web servera:

# Primer za Nginx
server {
    listen 80;
    server_name myapp.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name myapp.com;

    ssl_certificate /path/to/myapp.com.crt;
    ssl_certificate_key /path/to/myapp.com.key;

    # Ostale SSL/TLS postavke
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # ... ostale postavke servera (root, location itd.)
}