Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
För att aktivera HTTP/2 via TLS (Transport Layer Security) i Windows måste två krav uppfyllas:
- stöd för Application-Layer Protocol Negotiation (ALPN), som är tillgängligt från och med Windows 8.1 och Windows Server 2012 R2.
- En uppsättning chiffer som är kompatibla med HTTP/2, som är tillgängliga från och med Windows 10 och Windows Server 2016.
Kestrels beteende när HTTP/2 över TLS har konfigurerats har därför ändrats till:
- Nedgradera till
Http1och logga ett meddelande på nivånInformationnär ListenOptions.HttpProtocols är inställt påHttp1AndHttp2.Http1AndHttp2är standardvärdet förListenOptions.HttpProtocols. - Kasta en
NotSupportedExceptionnärListenOptions.HttpProtocolsär inställd påHttp2.
För diskussion, se problem dotnet/aspnetcore#23068.
Version lanserad
ASP.NET Core 5.0
Gammalt beteende
I följande tabell beskrivs hur HTTP/2 över TLS har konfigurerats.
| Protokoll | Windows 7, Windows Server 2008 R2, eller tidigare |
Windows 8, Windows Server 2012 |
Windows 8.1 Windows Server 2012 R2 |
Windows 10, Windows Server 2016, eller senare |
|---|---|---|---|---|
Http2 |
Kasta NotSupportedException |
Fel vid TLS-handskakning | Fel under TLS-handskakning * | Inget fel |
Http1AndHttp2 |
Nedgradera till Http1 |
Nedgradera till Http1 |
Fel under TLS-handskakning * | Inget fel |
* Konfigurera kompatibla chiffersviter för att aktivera dessa scenarier.
Nytt beteende
I följande tabell beskrivs hur HTTP/2 över TLS har konfigurerats.
| Protokoll | Windows 7, Windows Server 2008 R2, eller tidigare |
Windows 8, Windows Server 2012 |
Windows 8.1 Windows Server 2012 R2 |
Windows 10, Windows Server 2016, eller senare |
|---|---|---|---|---|
Http2 |
Kasta NotSupportedException |
Kasta NotSupportedException |
Kasta NotSupportedException ** |
Inget fel |
Http1AndHttp2 |
Nedgradera till Http1 |
Nedgradera till Http1 |
Nedgradera till Http1 ** |
Inget fel |
** Konfigurera kompatibla chiffersviter och ställ in appkontextväxeln Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2 till true för att aktivera dessa scenarier.
Orsak till ändring
Den här ändringen säkerställer att kompatibilitetsfel för HTTP/2 över TLS på äldre Windows-versioner visas så tidigt och så tydligt som möjligt.
Rekommenderad åtgärd
Kontrollera att HTTP/2 via TLS är inaktiverat i inkompatibla Windows-versioner. Windows 8.1 och Windows Server 2012 R2 är inkompatibla eftersom de saknar nödvändiga chiffer som standard. Det går dock att uppdatera datorkonfigurationsinställningarna så att de använder HTTP/2-kompatibla chiffer. Mer information finns i TLS-chiffersviter i Windows 8.1. När det har konfigurerats måste HTTP/2 via TLS på Kestrel aktiveras genom att ange appkontextväxeln Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2. Till exempel:
AppContext.SetSwitch("Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2", true);
Inget underliggande stöd har ändrats. Till exempel har HTTP/2 via TLS aldrig fungerat på Windows 8 eller Windows Server 2012. Den här ändringen ändrar hur fel i dessa scenarier som inte stöds visas.
Berörda API:er
Ingen