Sobes.tech
Junior

Kuidas saate kaitsta oma andmeid HTTPS-protokoliga?

sobes.tech AI

Vastus AI-lt

HTTPS kasutab SSL/TLS protokolli, et tagada turvaline ühendus kliendi ja serveri vahel. Seda saavutatakse kolme peamise mehhanismi abil:

  1. Krüpteerimine: Kõik edastatavad andmed krüpteeritakse, muutes need volitamata isikute jaoks loetamatuks, kes jälgivad liiklust. Kasutatakse sümmeetrilisi ja asümmeetrilisi krüpteerimisalgoritme.
  2. Andmete terviklikkus: HTTPS tagab, et andmed ei ole edastamise ajal muudetud. Selleks kasutatakse hash-funktsioone. Kui andmed on muudetud, ei kattu vastuvõetud ja saadetud hash-summad.
  3. Autentimine: Klient kontrollib serveri ehtsust digitaalsertifikaadi abil, mis väljastatakse usaldusväärse sertifikaadiasutuse (CA) poolt. See takistab Man-in-the-Middle rünnakuid.

HTTPS ühenduse loomisel toimub käepigistus:

  • Klient ja server lepivad kokku SSL/TLS versiooni ja šifrite kogumi.
  • Server saadab oma digitaalse sertifikaadi kliendile.
  • Klient kontrollib sertifikaati (CA usaldusväärsus, kehtivusaeg, domeeninime vastavus).
  • Klient genereerib seansi võtme, krüpteerib selle avaliku võtmega (sertifikaadist) ja saadab serverile.
  • Server dekrüpteerib seansi võtme oma privaatvõtmega.
  • Seejärel on kogu liiklus kliendi ja serveri vahel krüpteeritud selle seansi võtmega.

Näide HTTPS kasutamisest Ruby on Railsis:

Tootmiskeskkonnas suunab Rails automaatselt HTTP-päringud HTTPS-ile, kui veebiserver on õigesti konfigureeritud (Nginx, Apache):

# config/environments/production.rb
# Kehtestab kogu juurdepääsu rakendusele SSL-i kaudu, kasutades Strict-Transport-Security ja turvalisi küpsiseid.
config.force_ssl = true

Veebiserveri tasandil:

# Näide Nginx jaoks
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;

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

    # ... ülejäänud serveri seaded (root, location jmt)
}