HTTPS: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
 
Rad 78: Rad 78:


=== 5. Krypterad kommunikation ===
=== 5. Krypterad kommunikation ===
All ytterligare kommunikation är nu krypterad och sker genom att använda sessionnyckeln. Exempelvis, en HTTP GET-förfrågan:
All ytterligare kommunikation är nu krypterad och sker genom att använda sessionnyckeln.  
<syntaxhighlight lang="plaintext">
Client: GET /index.html HTTP/1.1
</syntaxhighlight>


Serverns svar på GET-förfrågan:
Exempelvis, en HTTP GET-förfrågan:
<syntaxhighlight lang="plaintext">
 
Server: HTTP/1.1 200 OK
<code>Client: GET /index.html HTTP/1.1</code>
Server: (webbsidans innehåll)
 
</syntaxhighlight>
<code>Serverns svar på GET-förfrågan:</code>
 
<code>Server: HTTP/1.1 200 OKClient: GET /index.html HTTP/1.1↵</code>
 
<code>Serverns svar på GET-förfrågan:</code>
 
<code>Server: HTTP/1.1 200 OK</code>
 
<code>Server: (webbsidans innehåll)</code>
 
<code>Server: (webbsidans innehåll)</code>

Nuvarande version från 19 maj 2024 kl. 07.56

HTTPS

HTTPS (HyperText Transfer Protocol Secure) är en säker version av HTTP, det protokoll som används för att överföra webbsidor på internet. HTTPS använder sig av TLS (Transport Layer Security) eller SSL (Secure Sockets Layer) för att kryptera dataöverföringen mellan klienten (webbläsaren) och servern. Detta säkerställer att data förblir konfidentiell och integriteten bibehålls under överföringen.

Historia

HTTPS introducerades av Netscape Communications Corporation i 1994 för deras webbläsare Netscape Navigator. Syftet var att skapa en säker kanal för att överföra känslig information såsom betalningsdetaljer. Sedan dess har HTTPS blivit standard för säkra webbplatser och används i stor utsträckning för att skydda användardata och kommunikation.

Funktioner

HTTPS tillhandahåller flera säkerhetsfunktioner:

  • Kryptering: All data som överförs mellan klienten och servern krypteras, vilket förhindrar att obehöriga kan läsa eller manipulera informationen.
  • Autentisering: Serverns identitet verifieras med hjälp av digitala certifikat, vilket försäkrar klienten om att den kommunicerar med rätt server.
  • Integritet: Data som skickas över HTTPS kan inte ändras eller förvrängas utan att detta upptäcks.

Teknisk Översikt

För att förstå hur HTTPS fungerar på en teknisk nivå är det viktigt att gå igenom de steg som sker när en HTTPS-anslutning etableras:

1. Klientförfrågan

När en användare besöker en HTTPS-webbplats, skickar webbläsaren en förfrågan till servern för att etablera en säker anslutning. Detta görs via port 443, vilket är standardporten för HTTPS-trafik.

2. Serverns certifikat

Servern svarar med att skicka sitt digitala certifikat till klienten. Certifikatet innehåller serverns publika nyckel och information om certifikatutfärdaren (CA - Certificate Authority).

3. Certifikatvalidering

Klienten validerar certifikatet genom att kontrollera att det är utfärdat av en betrodd CA och att det inte har gått ut eller blivit återkallat. Om certifikatet är giltigt, använder klienten den publika nyckeln för att kryptera en slumpmässig sessionnyckel.

4. Nyckelutbyte

Den krypterade sessionnyckeln skickas tillbaka till servern, som dekrypterar den med sin privata nyckel. Både klienten och servern har nu en gemensam sessionnyckel som kommer att användas för att kryptera den fortsatta kommunikationen.

5. Krypterad kommunikation

Alla efterföljande dataöverföringar mellan klienten och servern krypteras med sessionnyckeln. Detta säkerställer att datan förblir privat och säker från avlyssning och manipulation.

Exempel på HTTPS i Användning

Låt oss illustrera detta med ett exempel på hur HTTPS fungerar i praktiken:

1. Användaren skriver in "https://www.example.com" i webbläsarens adressfält. 2. Webbläsaren skickar en förfrågan till "www.example.com" över port 443. 3. Servern på "www.example.com" skickar tillbaka sitt digitala certifikat. 4. Webbläsaren validerar certifikatet och använder den publika nyckeln för att kryptera en slumpmässig sessionnyckel. 5. Servern dekrypterar sessionnyckeln med sin privata nyckel. 6. Nu är en säker kommunikationskanal etablerad och all vidare dataöverföring är krypterad.

Exempel på Protokollflöde

Här följer ett exempel på hur HTTPS-protokollet fungerar på en teknisk nivå, inklusive några av de faktiska kommandona som skickas:

Exempel på Protokollflöde

Här följer ett exempel på hur HTTPS-protokollet fungerar på en teknisk nivå, inklusive några av de faktiska kommandona som skickas:

1. Klientförfrågan

Klienten skickar en förfrågan om att starta en säker anslutning: <syntaxhighlight lang="plaintext"> Client: ClientHello </syntaxhighlight>

2. Serverns svar

Servern svarar med sitt certifikat och kryptografiska parametrar: <syntaxhighlight lang="plaintext"> Server: ServerHello Server: Certificate Server: ServerKeyExchange Server: ServerHelloDone </syntaxhighlight>

3. Klientens svar

Klienten validerar certifikatet och skickar tillbaka en krypterad sessionnyckel: <syntaxhighlight lang="plaintext"> Client: ClientKeyExchange Client: ChangeCipherSpec Client: Finished </syntaxhighlight>

4. Serverns bekräftelse

Servern dekrypterar sessionnyckeln och bekräftar att den säkra anslutningen är etablerad: <syntaxhighlight lang="plaintext"> Server: ChangeCipherSpec Server: Finished </syntaxhighlight>

5. Krypterad kommunikation

All ytterligare kommunikation är nu krypterad och sker genom att använda sessionnyckeln.

Exempelvis, en HTTP GET-förfrågan:

Client: GET /index.html HTTP/1.1

Serverns svar på GET-förfrågan:

Server: HTTP/1.1 200 OKClient: GET /index.html HTTP/1.1↵

Serverns svar på GET-förfrågan:

Server: HTTP/1.1 200 OK

Server: (webbsidans innehåll)

Server: (webbsidans innehåll)