Sobes.tech
Junior

Räägi mulle HTTPS protokollist.

sobes.tech AI

Vastus AI-lt

HTTPS (Hypertext Transfer Protocol Secure) on HTTP protokolli laiendus, mis tagab turvalise andmeedastuse kliendi (brauseri) ja serveri vahel:

Peamised erinevused ja tööpõhimõtted HTTP:

  • Krüpteerimine: Kasutab SSL/TLS protokolle andmete krüpteerimiseks, kaitstes neid pealtkuulamise ja muutmise eest.
  • Terviklikkus: Tagab, et kliendilt saadetud andmed jõuavad serverini muutumatuna.
  • Autentimine: võimaldab kliendil kontrollida serveri autentsust, veendumaks, et ta suhtleb õige ressursiga.

Turvalise ühenduse loomise etapid:

  1. Client Hello: Klient saadab serverile nimekirja toetatud SSL/TLS versioonidest, krüpteerimisalgoritmidest ja muudest parameetritest.
  2. Server Hello: Server valib sobivaimad parameetrid ning saadab need tagasi, samuti oma sertifikaadi.
  3. Certificate Verify: Klient kontrollib serveri sertifikaati (autentsus, kehtivusaeg, usaldusketi).
  4. Client Key Exchange: Klient genereerib sessiooni salajase võtme, krüpteerib selle serveri avaliku võtmega (sertifikaadist) ja saadab serverile.
  5. Server Change Cipher Spec, Finished: Server dekrüpteerib salajase võtme, alustab sessiooni krüpteerimist ning kinnitab valmisolekut andmete vahetamiseks.
  6. Client Change Cipher Spec, Finished: Klient samuti alustab sessiooni krüpteerimist ning kinnitab valmisolekut.
  7. Turvaline andmevahetus: Edasine andmevahetus toimub simmetrilise krüpteerimisega, kasutades sessiooni salajast võtit.

HTTPS on kohustuslik konfidentsiaalse info (logid, paroolid, panganduse andmed) töötlemiseks ning oluline SEO faktor. HTTPS-i testimisel tuleb kontrollida:

  • SSL sertifikaadi kehtivust ja õigsust.
  • Tänapäevaste TLS versioonide toetust.
  • Nõrkade kohtade olemasolu (nt Heartbleed, POODLE).
  • Õige suunamise HTTP-st HTTPS-ile.
  • Segatud sisu (kui HTTPS-le laaditakse HTTP ressursse).

Tööriistad: Postman, curl, OpenSSL, brauseri arendustööriistad.

# SSL sertifikaadi kontroll OpenSSL-iga
openssl s_client -connect example.com:443
# HTTPS päring Python requests-iga
import requests

try:
    response = requests.get("https://example.com")
    response.raise_for_status()  # HTTP vigade kontroll
    print("HTTPS ühendus edukas")
except requests.exceptions.RequestException as e:
    print(f"Viga HTTPS-ühenduses: {e}")