Korzystanie z protokołu HTTP / 2 w systemie Windows Server 2016 z zakończeniem TLS / SSL

1

Zastanawiam się nad możliwością użycia systemu Windows Server 2016 dla grupy serwerów WWW, które stoją za modułem równoważenia obciążenia, który używa odciążania SSL.

Dla mnie największą zaletą systemu Windows Server 2016 w porównaniu z 2012 r. Jest to, że można użyć protokołu HTTP / 2. Ponieważ jednak HTTP / 2 jest generalnie wdrażany w stosunku do HTTPS, obawiam się, że żądania nie będą rozpoznawane jako HTTPS, ponieważ przychodzą jako HTTP (choć z x-forwarded-protonagłówkiem). Szukałem i znalazłem na nim kilka zasobów , ale nie ma wielu konkretnych dowodów.

Czy ktoś wie, czy usługi IIS będą obsługiwać tę konfigurację i nadal wysyłają odpowiedź przez HTTP / 2, czy też cały ruch po prostu spadnie do HTTP / 1.1? Czy istnieje sposób skonfigurowania / trick (!) IIS do używania HTTP / 2 na żądanie, które może wyglądać na niezabezpieczone?

Dzięki.

Edycja: Aby to wyjaśnić, moduł równoważenia obciążenia wyśle x-forwarded-proto:httpsna serwer, ale aplikacja żądająca widzi to jako niezabezpieczone z powodu odciążenia protokołu SSL.

Dan Atkinson
źródło
To jest trochę niejasne. Wygląda na to, że chcesz wydać http:połączenie zawierające X-Forwarded-Protocol: httpsi traktować je jako https:? Jest to wątpliwe, ponieważ cytowany zasób mówi: „IIS obsługuje obecnie HTTP / 2 tylko przez TLS”. Ale powinno to być łatwe do przetestowania na maszynie wirtualnej WS2016.
harrymc
Jeśli Windows Server 2012 obsługuje HTTP / 2, to 2016 obsługuje go. Tylko TLS 1.2+ jest uważany za bezpieczny. W przyszłości jest to jedyny zestaw szyfrów, którego powinieneś używać.
Ramhound
@harrymc Nie, x-forwarded-protonagłówek ma wartość httpswskazującą, że żądanie pochodzenia to HTTPS. Jednak gdy serwer WWW zobaczy żądanie, adres URL żądania będzie miał HTTPprotokół.
Dan Atkinson
@Ramhound To nie jest poprawne. Windows Server 2012 nie obsługuje HTTP / 2. Jest dostępny tylko w systemie Windows 10 i Server 2016. Listę obsługiwanych platform Windows dla HTTP / 2 można znaleźć tutaj
Dan Atkinson
1
A jeśli się uda? Muszę powiedzieć, X-Forwarded-Protocolże to dziura w zabezpieczeniach, po prostu flaga „zaufaj mi”. Może być konieczne wyłączenie niektórych zabezpieczeń ( przykład ).
harrymc

Odpowiedzi:

1

Jak wskazano w poście na blogu, który podłączyłeś (i potwierdziłeś, że zmieniło się tutaj w oficjalne dokumenty ), IIS będzie używał protokołu HTTP / 2 tylko wtedy, gdy ustanowione zostanie połączenie TLS z serwerem IIS.

Jak zaimplementowano dzisiaj w IIS 10, HTTP / 2 jest identyfikowany przy użyciu ALPN podczas uzgadniania TLS. Jeśli nie ma ALPN ani TLS, nie będzie HTTP / 2. Zobacz ten wykład BUILD z 2015 roku, zaczynający się od około 5'06 " i pamiętaj, że IIS nie implementuje mechanizmu aktualizacji HTTP / 1.1 (jak podano na 8'46" w filmie).

W twoim scenariuszu prawie na pewno jest tak, że moduł równoważenia obciążenia ustanowi czyste połączenia TCP i wyśle ​​żądania HTTP / 1.1 do serwerów zaplecza. Zanim IIS może nawet zobaczyć x-forwarded-protonagłówek, połączenie zostało już ustanowione i protokół HTTP / 1.1 został już zidentyfikowany.

Obecnie możliwe jest, że moduł równoważenia obciążenia może obsługiwać sam HTTP / 2, więc przeglądarki użytkowników końcowych będą mogły multipleksować żądania i odpowiedzi za pomocą modułu równoważenia obciążenia, podczas gdy tłumaczy je na żądania HTTP / 1.1 i odpowiedzi na serwery zaplecza .

Możliwe jest również, że moduł równoważenia obciążenia może ustanowić połączenia TLS z serwerami zaplecza i używać protokołu HTTP / 2, ale to w większości zniszczyłoby punkt odciążania protokołu SSL.

Mike Schenk
źródło