Frage Verwenden von HTTP / 2 unter Windows Server 2016 mit TLS / SSL-Beendigung


Ich untersuche die Möglichkeit, Windows Server 2016 für eine Gruppe von Webservern zu verwenden, die sich hinter einem Load Balancer mit SSL-Offloading befinden.

Für mich ist der größte Vorteil von Windows Server 2016 gegenüber 2012, dass das HTTP / 2-Protokoll verwendet werden kann. Da HTTP / 2 im Allgemeinen jedoch gegen HTTPS implementiert wird, bin ich besorgt, dass Anforderungen nicht als HTTPS erkannt werden, da sie als HTTP ankommen (wenn auch mit einem x-forwarded-proto Header). Ich habe gesucht und ein paar gefunden Ressourcen darauf aber es gibt nicht viele konkrete Beweise.

Weiß jemand, ob IIS dieses Setup unterstützt und dennoch die Antwort über HTTP / 2 sendet, oder wird der gesamte Datenverkehr einfach auf HTTP / 1.1 zurückfallen? Gibt es eine Möglichkeit, IIS für die Verwendung von HTTP / 2 bei einer Anfrage zu konfigurieren, die möglicherweise unsicher ist?

Vielen Dank.

Bearbeiten: Um zu klären, wird der Load Balancer senden x-forwarded-proto:https auf den Server, aber die anfragende Anwendung sieht es als unsicher wegen der SSL-Verschiebung.


1
2017-08-04 09:46


Ursprung


Das ist etwas unklar. Es scheint, als ob Sie eine Ausgabe wünschen http: Anruf enthält X-Forwarded-Protocol: https und habe es wie behandelt https:? Dies ist zweifelhaft, da die von Ihnen angegebene Ressource sagt: "IIS unterstützt derzeit nur HTTP / 2 über TLS". Aber es sollte einfach genug sein, dies auf einer WS2016 VM zu testen. - harrymc
Wenn Windows Server 2012 HTTP / 2 unterstützt, wird dies von 2016 unterstützt. Nur TLS 1.2+ gilt als sicher. Das ist die einzige Verschlüsselungssuite, die Sie verwenden sollten. - Ramhound
@harrymc Nein, die x-forwarded-proto Header hat den Wert https, die angibt, dass die Ursprungsanforderung lautet HTTPS. Wenn der Webserver die Anfrage jedoch sieht, hat die anfordernde URL die HTTPProtokoll. - Dan Atkinson
@Ramhound Das ist nicht korrekt. Windows Server 2012 tut es nicht unterstützt HTTP / 2. Es ist nur mit Windows 10 und Server 2016 verfügbar. Sie können die Liste der unterstützten Windows-Plattformen für HTTP / 2 anzeigen Hier - Dan Atkinson
Und wenn es gelingt? Ich muss das sagen X-Forwarded-Protocol scheint wie ein Sicherheitsloch, im Grunde nur eine "Vertrauen Sie mir" -Flagge. Möglicherweise müssen Sie einige Sicherheitsmaßnahmen deaktivieren (Beispiel). - harrymc


Antworten:


Wie in dem Blogbeitrag erwähnt, den Sie verlinkt haben (und bestätigt, als es zu offiziellen Dokumenten wurde) Hier) Verwendet IIS das HTTP / 2-Protokoll nur, wenn eine TLS-Verbindung zum IIS-Server hergestellt wurde.

Wie heute in IIS 10 implementiert, wird HTTP / 2 durch Verwendung von ALPN während des TLS-Handshakes identifiziert. Wenn es weder ALPN noch TLS gibt, wird es kein HTTP / 2 geben. Sieh dir das an BUILD Talk ab 2015 ab ca. 5'06 " Beachten Sie, dass IIS den HTTP / 1.1-Aktualisierungsmechanismus nicht implementiert (wie im Video unter 8'46 "angegeben).

In Ihrem Szenario ist es fast sicher der Fall, dass der Load Balancer eindeutige TCP-Verbindungen herstellt und HTTP / 1.1-Anforderungen an die Back-End-Server sendet. Zu der Zeit kann IIS sogar die x-forwarded-proto Header, die Verbindung wurde bereits hergestellt und das HTTP / 1.1-Protokoll wurde bereits identifiziert.

Nun ist es möglich, dass Ihr Lastenausgleichsmodul HTTP / 2 selbst unterstützt, sodass die Browser Ihrer Endbenutzer Anforderungen und Antworten mit dem Lastenausgleichsmodul multiplexen können, während diese Anforderungen in HTTP / 1.1-Anforderungen und Antworten an Ihre Back-End-Server umgesetzt werden .

Es ist auch möglich, dass Ihr Load Balancer TLS-Verbindungen zu den Back-End-Servern herstellt und HTTP / 2 verwendet. Dies würde jedoch die SSL-Auslagerung meist verhindern.


1
2017-09-08 21:53