Sobes.tech
Junior

Hogyan lehet védeni adatait HTTPS protokollal?

sobes.tech MI

Válasz az MI-től

A HTTPS az SSL/TLS protokollt használja a kliens és a szerver közötti biztonságos kapcsolat biztosítására. Ez három fő mechanizmus révén valósul meg:

  1. Titkosítás: Az összes továbbított adat titkosítva van, így azokat a támadók, akik a forgalmat elfogják, olvashatatlanná teszik. Szimmetrikus és aszimmetrikus titkosítási algoritmusokat használnak.
  2. Adat integritás: A HTTPS garantálja, hogy az adatok nem változtak a továbbítás során. Ehhez hash függvényeket alkalmaznak. Ha az adatok módosultak, a fogadáskor számított összeg nem egyezik meg a küldő által számítottal.
  3. Hitelesítés: A kliens ellenőrzi a szerver hitelességét digitális tanúsítvány segítségével, amelyet egy megbízható tanúsítványkiadó (CA) bocsát ki. Ez megakadályozza a Man-in-the-Middle típusú támadásokat.

A HTTPS kapcsolat létesítésekor egy kézfogás (handshake) történik:

  • A kliens és a szerver egyeztet a SSL/TLS verzióról és a titkosítási készletekről.
  • A szerver elküldi digitális tanúsítványát a kliensnek.
  • A kliens ellenőrzi a tanúsítványt (CA hitelesség, érvényesség, a domain névhez való megfelelés).
  • A kliens létrehoz egy munkamenet kulcsot, azt a szerver nyilvános kulcsával (a tanúsítványból) titkosítja, és elküldi a szervernek.
  • A szerver dekódolja a munkamenet kulcsot a saját privát kulcsával.
  • Ezután az összes forgalom a munkamenet kulcs használatával titkosítva történik.

Példa a HTTPS használatára Ruby on Rails-ben:

A termelési környezetben a Rails automatikusan átirányítja a HTTP kéréseket HTTPS-re, ha a webszerver konfigurációja helyes (Nginx, Apache):

# config/environments/production.rb
# Kényszerítse az összes hozzáférést az alkalmazáshoz SSL-en keresztül, használja a Strict-Transport-Security-t és a biztonságos cookie-kat.
config.force_ssl = true

A webszerver szinten:

# Nginx példa
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;

    # Egyéb SSL/TLS beállítások
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # ... egyéb szerverbeállítások (root, location stb.)
}