Usando HTTP / 2 no Windows Server 2016 com terminação TLS / SSL

1

Estou estudando a possibilidade de usar o Windows Server 2016 para um grupo de servidores da Web que estão por trás de um balanceador de carga que usa o descarregamento de SSL.

Para mim, a maior vantagem do Windows Server 2016 em relação a 2012 é que o protocolo HTTP / 2 pode ser usado. No entanto, como o HTTP / 2 geralmente está sendo implementado em HTTPS, estou preocupado que as solicitações não sejam reconhecidas como HTTPS porque elas chegam como HTTP (embora com um x-forwarded-proto header). Eu procurei e encontrei alguns recursos , mas não há muitas evidências concretas.

Alguém sabe se o IIS suportará essa configuração e ainda enviará a resposta via HTTP / 2 ou se todo o tráfego simplesmente voltará para HTTP / 1.1? Existe uma maneira de configurar / enganar (!) O IIS para usar HTTP / 2 em uma solicitação que pode parecer insegura?

Obrigado.

Editar: para esclarecer, o balanceador de carga enviará x-forwarded-proto:https para o servidor, mas o aplicativo solicitante o considera inseguro devido ao descarregamento de SSL.

    
por Dan Atkinson 04.08.2017 / 11:46

1 resposta

1

Como apontado na postagem do blog que você vinculou (e confirmou quando se transformou em documentos oficiais aqui ), o IIS só usará o protocolo HTTP / 2 quando uma conexão TLS tiver sido estabelecida com o servidor IIS.

Conforme implementado hoje no IIS 10, o HTTP / 2 é identificado usando o ALPN durante o handshake de TLS. Se não houver ALPN nem TLS, não haverá HTTP / 2. Veja esta conversa BUILD de 2015 a partir de 5'06 " e mantenha-se em Lembre-se que o IIS não implementa o mecanismo de atualização HTTP / 1.1 (como indicado em 8'46 "no vídeo).

Em seu cenário, é quase certo que o balanceador de carga estabelecerá conexões TCP claras e enviará solicitações HTTP / 1.1 para os servidores de backend. No momento em que o IIS pode até ver o cabeçalho x-forwarded-proto , a conexão já foi estabelecida e o protocolo HTTP / 1.1 já foi identificado.

Agora, é possível que seu balanceador de carga possa suportar o próprio HTTP / 2, para que os navegadores de seus usuários finais possam multiplexar solicitações e respostas com o balanceador de carga enquanto os traduzem para solicitações e respostas HTTP / 1.1 nas suas costas -end servidores.

Também é possível que seu balanceador de carga possa estabelecer conexões TLS com os servidores de backend e usar o HTTP / 2, mas isso praticamente derrotaria o ponto de descarregamento do SSL.

    
por 08.09.2017 / 23:53