Ich bin kürzlich auf eine bestimmte Security Appliance (BlueCoat) gestoßen, die erfordert, dass alle Verbindungen zum Internet über diese übertragen werden müssen (Hallo, Mann in der Mitte) und dementsprechend ein spezielles SSL-Zertifikat verwendet, um den gesamten Datenverkehr abzufangen.
Diese auf den normalen Betrieb von Git verhindert, obwohl die entsprechenden http.proxy
und http.sslCAInfo
Eigenschaften wurden festgelegt , um sicherzustellen , dass die SSL - Verbindung selbst funktioniert.
Bei Verwendung der Umgebungsvariablen GIT_CURL_VERBOSE=1
haben wir festgestellt, dass bei Verwendung git clone
ein HTTP 407 (Proxy-Authentifizierung erforderlich) auftritt. Git erfüllt diese Authentifizierung ordnungsgemäß und am Ende gibt die Appliance ein HTTP 200 mit einem Cookie-Header zurück Set-Cookie
.
Git stellt dann eine Verbindung zum Zielserver her, jedoch ohne das Cookie, was zu einem HTTP 401 führt.
Die Lösung hierfür besteht darin, die Git-Konfigurationsoption festzulegen http.saveCookies=true
Frage: Ist es nach den RFC-Standards tatsächlich zulässig, dass ein Zwischen-Proxy Cookies hinzufügt?
Anthony Rich stellte die gleiche Frage an die Mailingliste des http-Status, jedoch ohne Antwort. Er hat das in bemerkt
RFC 2965 HTTP-Statusverwaltungsmechanismus, 3.5 Zwischenspeichern der Proxy-Rolle: Proxies DÜRFEN KEINE eigenen Set-Cookie2 (Cookie) -Header in Proxy-Antworten (Anforderungen) einführen.
Der ersetzende RFC 6265 erwähnt dies jedoch überhaupt nicht mehr.