9 Proxies und HTTPS

9.1 HTTPS-Verbindungen durch Proxies

9.1.1 Grundlagen von HTTPS

HTTPS (HyperText Transfer Protocol Secure) ist eine Erweiterung des HTTP-Protokolls und bietet eine sichere Kommunikation über ein Computernetzwerk. Es verwendet SSL/TLS (Secure Sockets Layer/Transport Layer Security) zur Verschlüsselung der Datenübertragung, wodurch Vertraulichkeit und Integrität der Daten gewährleistet werden.

9.1.2 SSL/TLS Handshake

Der SSL/TLS Handshake ist der Prozess, durch den ein Client und ein Server eine sichere Verbindung herstellen. Während dieses Handshakes werden die Verschlüsselungsparameter ausgehandelt, und beide Seiten authentifizieren sich gegenseitig.

tls_handshake.svg
  1. Client Hello: Der Client sendet eine Nachricht mit den unterstützten Verschlüsselungsverfahren und einer Zufallszahl an den Server.
  2. Server Hello: Der Server antwortet mit dem ausgewählten Verschlüsselungsverfahren, seinem Zertifikat und einer eigenen Zufallszahl.
  3. Server Key Exchange: Bei Bedarf sendet der Server zusätzliche Schlüsselparameter.
  4. Certificate Request: Der Server kann den Client um ein Zertifikat bitten (für die gegenseitige Authentifizierung).
  5. Client Certificate: Der Client sendet sein Zertifikat (falls angefordert).
  6. Client Key Exchange: Der Client sendet Informationen, die zur Erstellung eines gemeinsamen Sitzungsschlüssels benötigt werden.
  7. Finished Messages: Beide Seiten senden verschlüsselte Nachrichten, die die Integrität der Handshake-Nachrichten bestätigen.

9.1.3 Proxies und HTTPS-Kommunikation

Ein Proxy-Server, der HTTPS-Verbindungen unterstützt, muss in der Lage sein, die SSL/TLS-Verschlüsselung zu handhaben. Es gibt zwei Hauptarten, wie Proxies mit HTTPS umgehen können:

9.1.3.1 1. Tunneling (CONNECT-Method)

Beim Tunneling erstellt der Proxy eine direkte, verschlüsselte Verbindung zwischen dem Client und dem Zielserver. Der Proxy sieht nur den Zielhost, aber nicht den Inhalt der Kommunikation.

9.1.3.2 2. SSL Interception (Man-in-the-Middle)

Bei der SSL Interception entschlüsselt der Proxy die HTTPS-Verbindung, inspiziert den Inhalt und verschlüsselt die Daten dann wieder, bevor sie an den Zielserver gesendet werden. Dies erfordert, dass der Proxy ein eigenes SSL-Zertifikat verwendet und als “Man-in-the-Middle” agiert.

9.1.4 Zertifikatsmanagement

Für Proxies, die SSL Interception verwenden, ist das Zertifikatsmanagement von entscheidender Bedeutung. Der Proxy muss ein Root-Zertifikat besitzen, das auf allen Clients als vertrauenswürdig installiert ist. Dieses Root-Zertifikat wird verwendet, um dynamisch Zertifikate für die Zielserver zu generieren.