Sobes.tech
Junior

Pověz mi o protokolu HTTPS.

sobes.tech AI

Odpověď od AI

HTTPS (Hypertext Transfer Protocol Secure) je rozšíření protokolu HTTP, které zajišťuje zabezpečený přenos dat mezi klientem (prohlížečem) a serverem.

Hlavní rozdíly a principy fungování HTTP:

  • Šifrování: Používá protokoly SSL/TLS k zašifrování dat, chrání je před zachycením a změnou.
  • Integrita: Zaručuje, že data odeslaná klientem dorazí na server beze změn.
  • Autentifikace: Umožňuje klientovi ověřit pravost serveru, ujistit se, že komunikuje s požadovaným zdrojem.

Fáze navázání zabezpečeného spojení:

  1. Client Hello: Klient odešle serveru seznam podporovaných verzí SSL/TLS, algoritmů šifrování a dalších parametrů.
  2. Server Hello: Server vybere z navržených parametrů ty nejvhodnější a odešle je zpět spolu se svým certifikátem.
  3. Certificate Verify: Klient ověří certifikát serveru (autenticita, platnost, řetězec důvěry).
  4. Client Key Exchange: Klient vygeneruje tajný klíč relace, zašifruje ho veřejným klíčem serveru (z certifikátu) a odešle.
  5. Server Change Cipher Spec, Finished: Server dešifruje tajný klíč, spustí šifrování relace a potvrdí, že je připraven na výměnu zašifrovaných dat.
  6. Client Change Cipher Spec, Finished: Klient také spustí šifrování relace a potvrdí, že je připraven.
  7. Zabezpečená výměna dat: Další výměna dat probíhá pomocí symetrického šifrování na základě tajného klíče relace.

HTTPS je povinný pro webové stránky pracující s důvěrnými informacemi (přihlašovací údaje, hesla, bankovní údaje) a je důležitým faktorem SEO. Při testování HTTPS je důležité ověřit:

  • Platnost a správnost SSL certifikátu.
  • Podporu moderních verzí TLS.
  • Přítomnost zranitelností (například Heartbleed, POODLE).
  • Správné přesměrování z HTTP na HTTPS.
  • Míšený obsah (kdy jsou na HTTPS stránce načítány zdroje přes HTTP).

Pro testování se používají nástroje jako Postman, curl, OpenSSL a vývojářské nástroje prohlížeče.

# Kontrola SSL certifikátu pomocí OpenSSL
openssl s_client -connect example.com:443
# Příklad HTTPS požadavku pomocí Python requests
import requests

try:
    response = requests.get("https://example.com")
    response.raise_for_status()  # Kontrola chyb HTTP
    print("Úspěšné připojení přes HTTPS.")
except requests.exceptions.RequestException as e:
    print(f"Chyba při připojení přes HTTPS: {e}")