Nach der CONNECT-Request-Zeile gehören diese Bytes noch zum Proxy:

CONNECT service.example:443 HTTP/1.1\r\n
Host: service.example:443\r\n
User-Agent: example-client\r\n
\r\n

Wer Host oder User-Agent an Port 443 weiterleitet, liefert dem Ziel Klartext-Header, wo es TLS erwartet. Dieser Fehler kann auftreten, bevor die Wahl einer Chiffre überhaupt eine Rolle spielt.

  1. Lies und parse bis zum Header-Abschluss durch die Leerzeile, innerhalb einer Setup-Frist und eines Limits für die Headergröße.
  2. Wende die Proxy-Authentifizierung und die Zielrichtlinie an.
  3. Stelle die genehmigte Zielverbindung her.
  4. Sende die erfolgreiche CONNECT-Antwort und wechsle in den Tunnelmodus.

Bewahre gepufferte Bytes nach der Grenze für den passenden nächsten Zustand auf. Verwirf sie nicht und behandle die Request-Header des Proxys nicht als spätere Anfrage der Website.

Der Client hat eine entsprechende Pflicht auf der Antwortseite: das Lesen der erfolgreichen CONNECT-Antwort abschließen, bevor das getunnelte Protokoll beginnt. Beide Seiten müssen sich über die Grenze einig sein, an der der Stream seine Rolle wechselt.

Ähnliche Artikel