Sobes.tech
Junior

Kaip galite apsaugoti savo duomenis naudodami HTTPS protokolą?

sobes.tech AI

Atsakymas iš AI

HTTPS naudoja SSL/TLS protokolą, kad užtikrintų saugų ryšį tarp kliento ir serverio. Tai pasiekiama naudojant tris pagrindinius mechanizmus:

  1. Šifravimas: Visai perduodamai duomenys yra šifruojami, todėl jie tampa neskaitytini piktavaliams, kurie perima srautą. Naudojami simetriniai ir asimetriniai šifravimo algoritmai.
  2. Duomenų vientisumas: HTTPS garantuoja, kad duomenys nebuvo pakeisti perdavimo metu. Tam naudojamos maišos funkcijos. Jei duomenys buvo pakeisti, gavimo metu maišos suma nesutaps su siuntėjo maišos suma.
  3. Autentifikacija: Klientas patikrina serverio autentiškumą naudodamas skaitmeninį sertifikatą, išduotą patikimo sertifikavimo centro (CA). Tai apsaugo nuo žmogaus vidurio atakų.

Kai nustatomas HTTPS ryšys, vyksta rankos paspaudimas:

  • Klientas ir serveris susitaria dėl SSL/TLS versijos ir šifravimo rinkinio.
  • Serveris siunčia savo skaitmeninį sertifikatą klientui.
  • Klientas patikrina sertifikatą (CA patikimumas, galiojimo laikas, atitiktis domeno vardui).
  • Klientas sugeneruoja sesijos raktą, jį užšifruoja viešuoju serverio raktu (iš sertifikato) ir siunčia serveriui.
  • Serveris iššifruoja sesijos raktą savo privačiu raktu.
  • Visi duomenys tarp kliento ir serverio vėliau yra šifruojami naudojant šį sesijos raktą.

Pavyzdys, kaip naudoti HTTPS Ruby on Rails:

Produkcinėje aplinkoje Rails automatiškai peradresuoja HTTP užklausas į HTTPS, jei tinkamai sukonfigūruotas žiniatinklio serveris (Nginx, Apache):

# config/environments/production.rb
# Visas prieigas prie programos privaloma atlikti per SSL, naudojant Strict-Transport-Security ir saugius slapukus.
config.force_ssl = true

Web serverio lygyje:

# Pavyzdys 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;

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

    # ... kiti serverio nustatymai (root, location ir kt.)
}