Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Para habilitar HTTP/2 sobre Transport Layer Security (TLS) no Windows, dois requisitos precisam ser atendidos:
- Suporte para a negociação do protocolo Application-Layer (ALPN), que está disponível a partir do Windows 8.1 e Windows Server 2012 R2.
- Um conjunto de cifras compatíveis com HTTP/2, que está disponível a partir do Windows 10 e do Windows Server 2016.
Como tal, o comportamento do Kestrel quando HTTP/2 sobre TLS está configurado mudou para:
- Faça downgrade para
Http1e registe uma mensagem no nívelInformationquando ListenOptions.HttpProtocols estiver definido comoHttp1AndHttp2.Http1AndHttp2é o valor padrão paraListenOptions.HttpProtocols. - Lançar um
NotSupportedExceptionquandoListenOptions.HttpProtocolsestá definido comoHttp2.
Para discussão, consulte o tópico dotnet/aspnetcore#23068.
Versão introduzida
ASP.NET Núcleo 5.0
Comportamento antigo
A tabela a seguir descreve o comportamento quando HTTP/2 sobre TLS é configurado.
| Protocolos | Windows 7 Windows Server 2008 R2, ou anterior |
Windows 8 Windows Server 2012 |
Windows 8.1 Windows Server 2012 R2 |
Windows 10 Windows Server 2016, ou mais recente |
|---|---|---|---|---|
Http2 |
Lançamento NotSupportedException |
Erro durante o handshake TLS | Erro durante o handshake TLS * | Sem erro |
Http1AndHttp2 |
Reduzir para Http1 |
Reduzir para Http1 |
Erro durante o handshake TLS * | Sem erro |
* Configure pacotes de codificação compatíveis para habilitar esses cenários.
Novo comportamento
A tabela a seguir descreve o comportamento quando HTTP/2 sobre TLS é configurado.
| Protocolos | Windows 7 Windows Server 2008 R2, ou anterior |
Windows 8 Windows Server 2012 |
Windows 8.1 Windows Server 2012 R2 |
Windows 10 Windows Server 2016, ou mais recente |
|---|---|---|---|---|
Http2 |
Lançamento NotSupportedException |
Lançamento NotSupportedException |
Atirar NotSupportedException ** |
Sem erro |
Http1AndHttp2 |
Reduzir para Http1 |
Reduzir para Http1 |
Downgrade para Http1 ** |
Sem erro |
** Configure suites de encriptação compatíveis e defina o comutador de contexto da aplicação Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2 para true ativar esses cenários.
Motivo da mudança
Essa alteração garante que erros de compatibilidade para HTTP/2 sobre TLS em versões mais antigas do Windows sejam revelados o mais cedo e claramente possível.
Ação recomendada
Verifique se o HTTP/2 sobre TLS está desativado em versões incompatíveis do Windows. O Windows 8.1 e o Windows Server 2012 R2 são incompatíveis, uma vez que não possuem as cifras necessárias por padrão. No entanto, é possível atualizar as definições de Configuração do Computador para usar cifras compatíveis com HTTP/2. Para obter mais informações, consulte Pacotes de codificação TLS no Windows 8.1. Uma vez configurado, HTTP/2 sobre TLS no Kestrel deve ser habilitado definindo a opção Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2de contexto do aplicativo. Por exemplo:
AppContext.SetSwitch("Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2", true);
Nenhum suporte subjacente foi alterado. Por exemplo, HTTP/2 sobre TLS nunca funcionou no Windows 8 ou no Windows Server 2012. Essa alteração modifica como os erros nesses cenários sem suporte são apresentados.
APIs afetadas
Nenhum