Verhindern Sie, dass Google Chrome alle URLs mit einer gemeinsamen Basis als SSL-Verbindungen behandelt

Verhindern Sie, dass Google Chrome alle URLs mit einer gemeinsamen Basis als SSL-Verbindungen behandelt

Ich hoste mehrere Websites über einen vom ISP bereitgestellten DNS-Namen und teile sie über Port 80 meines Routers hinaus mithilfe einer Installation von haproxy auf. Das hat für meine (ich glaube, es sind 11) einzigartigen Websites sehr gut funktioniert, bis ich eine davon auf https geändert habe.

Nun geht Google Chrome davon aus, dass alle meine Websites https verwenden, und ich kann nur auf die Websites mit https zugreifen :-(

Ich vermute, der Grund, warum Chrome dies tut, ist, dass alle meine Websites mit meinem Domänennamen (myexampledomain.com) beginnen. Beispiel-Site 1 wärehttp://meinebeispieldomain.com/website-one/main.htmlund Beispiel-Site 2 wärehttps://meinebeispieldomain.com/website-zwei/main.htmlund aus irgendeinem Grund wird, nachdem Chrome erfolgreich auf den https-Link zugegriffen hat, auf den Nicht-https-Link automatisch als https zugegriffen. Löschen Sie das s (um es zu http zu machen) und Chrome fügt es einfach wieder ein.

Wenn ich über Internet Explorer 9 auf meine Websites zugreife, funktionieren sie alle noch einwandfrei oder können zumindest aufgerufen werden, ohne dass die Verbindung automatisch als https vervollständigt wird. Also nein, es gibt keine http-zu-https-Umleitung irgendwo auf meinem Backend, das ist einfach nur Chromes Dummheit. Weiß jemand, warum Chrome so albern ist und ob es eine Möglichkeit gibt, trotzdem von Chrome aus auf meine anderen Websites zuzugreifen? Ich hasse IE und seine Verwendung verursacht mir körperliche Schmerzen ;-)

Antwort1

(Um unsere Diskussion als richtige Antwort zusammenzufassen:)

Google Chrome (sowie alle anderen modernen Browser) unterstützt dieStrikte TransportsicherheitHTTP-Header, der den Browser darüber informiert, dass „auf diese Site nur über HTTPS zugegriffen werden soll. Geben Sie dem Benutzer daher in Zukunft HTTPS, auch wenn er nach HTTP fragt.“ Da die Verwendung von HTTPS immer üblicher wird, wird das Senden dieses Headers in neuer Software und Frameworks zum Standard. Wenn HTTPS überhaupt eingerichtet ist (was der Fall sein muss, damit der Strict-Transport-Security-Header irgendeine Wirkung hat), ist es im Allgemeinen vorzuziehen, es für alles zu verwenden. Wie Sie festgestellt haben, ist die von Ihnen verwendete Software standardmäßig so konfiguriert, dass sie sich so verhält. In Internet Explorer 9 haben Sie dieses Verhalten nicht gesehen, da dieser zu alt ist, um diese Funktion des Webs zu unterstützen.

Die beiden Lösungen sind entweder (1) die Konfiguration der Software so zu ändern, dass der Header nicht gesendet wird, da Sie nicht alle Benutzer zwingen möchten, HTTPS zu verwenden, oder (2) Ihre gesamte Site so zu ändern, dass sie über HTTPS ordnungsgemäß funktioniert. Ich würde grundsätzlich die zweite Option empfehlen, da es heutzutage wirklich nicht mehr nötig ist, eine unverschlüsselte Verbindung im Internet zu verwenden, sobald Sie den Server konfiguriert und ein funktionierendes HTTPS-Zertifikat haben.

Antwort2

Gemäß der Kommentarantwort von Peter Cooper Jr. ist mein Kummer auf meine mit Gitlab Omnibus gebündelte NGINX-Installation zurückzuführen, die den Verbindungsclients effektiv mitteilt, dass sie bei der Kommunikation mit ihr immer nur https verwenden sollten, und im Fall von Gitlab/NGINX ist die Dauer der sicheren Kommunikation auf 24 Monate festgelegt!

Informationen zu STS-Headern:http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
Infos zur Gitlab Installation:https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md

verwandte Informationen