25 TLS Tunneling

Wenn Squid HTTPS-Verkehr einfach durchschiebt, ohne ihn zu entschlüsseln, fungiert er als “Forward Proxy” für HTTPS. In diesem Fall wird der HTTPS-Verkehr direkt zwischen dem Client und dem Zielserver über den Proxy getunnelt, ohne dass der Proxy den verschlüsselten Inhalt sieht. Dies wird als “TLS-Tunneling” oder “SSL-Tunneling” bezeichnet und erfolgt über die CONNECT-Methode. Hier ist, wie es funktioniert:

  1. Client-Anfrage: Der Client sendet eine CONNECT-Anfrage an den Squid Proxy. Diese Anfrage enthält den Zielhost und den Port (normalerweise 443 für HTTPS).

    Beispiel:

    CONNECT www.example.com:443 HTTP/1.1
    Host: www.example.com:443
  2. Proxy-Verbindung: Squid stellt eine TCP-Verbindung zum Zielserver her und leitet die Verbindung an den Client weiter.

  3. TLS-Verbindung: Der Client und der Zielserver führen die TLS-Handschlag direkt durch. Der verschlüsselte Datenverkehr fließt durch den Proxy, ohne dass dieser den Inhalt sieht oder modifiziert.

In dieser Konfiguration sieht Squid nur, dass eine Verbindung zu einem bestimmten Zielhost und -port hergestellt wird, aber nicht den eigentlichen Inhalt des HTTPS-Verkehrs. Dies hat den Vorteil, dass keine speziellen Zertifikate oder zusätzliche Konfigurationen für die SSL-Entschlüsselung erforderlich sind. Es bedeutet jedoch auch, dass Squid keine Möglichkeit hat, den Inhalt des HTTPS-Verkehrs zu filtern, zu cachen oder zu modifizieren.

25.1 Beispielkonfiguration für TLS-Tunneling

Eine einfache Squid-Konfiguration, die HTTPS-Verkehr durchleitet, könnte so aussehen:

http_port 3128

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 443         # https
acl CONNECT method CONNECT

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow all

25.2 SSL Bump für HTTPS-Entschlüsselung

Wenn Sie den HTTPS-Verkehr entschlüsseln und inspizieren möchten, müssen Sie SSL Bump einrichten. Dies erfordert:

  1. Erstellen eines Root-Zertifikats: Sie müssen ein Root-Zertifikat erstellen und dieses auf den Client-Geräten installieren.

  2. Konfiguration von Squid für SSL Bump: Hier ein Beispiel für die Squid-Konfiguration:

    http_port 3128 ssl-bump cert=/path/to/squid-cert.pem key=/path/to/squid-key.pem
    
    acl step1 at_step SslBump1
    
    ssl_bump peek step1
    ssl_bump splice all
  3. Installation des Root-Zertifikats: Das Root-Zertifikat muss auf allen Client-Geräten installiert werden, die den Proxy verwenden.

25.3 Zusammenfassung

Ohne SSL Bump wird HTTPS-Verkehr einfach durch Squid getunnelt, ohne dass der Proxy den verschlüsselten Inhalt sieht. Dies ist die Standard- und einfachere Konfiguration. Wenn jedoch eine Inhaltsinspektion oder -filterung erforderlich ist, muss SSL Bump eingerichtet und das Root-Zertifikat auf den Clients installiert werden.