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-proto
nagłó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:https
na serwer, ale aplikacja żądająca widzi to jako niezabezpieczone z powodu odciążenia protokołu SSL.
http:
połączenie zawierająceX-Forwarded-Protocol: https
i traktować je jakohttps:
? 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.x-forwarded-proto
nagłówek ma wartośćhttps
wskazującą, że żądanie pochodzenia toHTTPS
. Jednak gdy serwer WWW zobaczy żądanie, adres URL żądania będzie miałHTTP
protokół.X-Forwarded-Protocol
że to dziura w zabezpieczeniach, po prostu flaga „zaufaj mi”. Może być konieczne wyłączenie niektórych zabezpieczeń ( przykład ).Odpowiedzi:
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-proto
nagłó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.
źródło