Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Um HTTP/2 über TLS (Transport Layer Security) unter Windows zu aktivieren, müssen zwei Anforderungen erfüllt sein:
- ALPN-Unterstützung (Application-Layer Protocol Negotiation), die ab Windows 8.1 und Windows Server 2012 R2 verfügbar ist
- Eine Reihe von Verschlüsselungen, die mit HTTP/2 kompatibel sind, die ab Windows 10 und Windows Server 2016 verfügbar sind.
Daher hat sich das Verhalten von Kestrel geändert, wenn HTTP/2 über TLS konfiguriert ist:
- Downgrade zu
Http1
und Protokollieren einer Nachricht auf derInformation
Ebene, wenn ListenOptions.HttpProtocols aufHttp1AndHttp2
festgelegt ist.Http1AndHttp2
ist der Standardwert fürListenOptions.HttpProtocols
. - Ausgabe von
NotSupportedException
, wennListenOptions.HttpProtocols
aufHttp2
festgelegt ist
Für Diskussionen siehe Thema dotnet/aspnetcore#23068.
Eingeführte Version
ASP.NET Core 5.0
Altes Verhalten
In der folgenden Tabelle wird das Verhalten beschrieben, wenn HTTP/2 über TLS konfiguriert ist.
Protokolle | Windows 7, Windows Server 2008 R2, oder früher |
Windows 8, Windows Server 2012 |
Windows 8.1 Windows Server 2012 R2 |
Windows 10, Windows Server 2016, oder höher |
---|---|---|---|---|
Http2 |
Ausgabe von NotSupportedException |
Fehler beim TLS-Handshake | Fehler beim TLS-Handshake * | Kein Fehler |
Http1AndHttp2 |
Herunterstufung zu Http1 |
Herunterstufung zu Http1 |
Fehler beim TLS-Handshake * | Kein Fehler |
* Konfigurieren Sie kompatible Verschlüsselungssammlungen, um diese Szenarien zu aktivieren.
Neues Verhalten
In der folgenden Tabelle wird das Verhalten beschrieben, wenn HTTP/2 über TLS konfiguriert ist.
Protokolle | Windows 7, Windows Server 2008 R2, oder früher |
Windows 8, Windows Server 2012 |
Windows 8.1 Windows Server 2012 R2 |
Windows 10, Windows Server 2016, oder höher |
---|---|---|---|---|
Http2 |
Ausgabe von NotSupportedException |
Ausgabe von NotSupportedException |
Ausgabe von NotSupportedException ** |
Kein Fehler |
Http1AndHttp2 |
Herunterstufung zu Http1 |
Herunterstufung zu Http1 |
Downgrade zu Http1 ** |
Kein Fehler |
** Konfigurieren Sie kompatible Chiffre-Suiten, und setzen Sie den App-Kontext-Schalter Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2
auf true
, um diese Szenarien zu ermöglichen.
Grund für Änderung
Diese Änderung stellt sicher, dass Kompatibilitätsfehler für HTTP/2 über TLS in älteren Windows-Versionen so früh und so klar wie möglich angezeigt werden.
Empfohlene Aktion
Stellen Sie sicher, dass HTTP/2 über TLS in inkompatiblen Windows-Versionen deaktiviert ist. Windows 8.1 und Windows Server 2012 R2 sind nicht kompatibel, da ihnen standardmäßig die erforderlichen Verschlüsselungen fehlen. Es ist jedoch möglich, die Computerkonfigurationseinstellungen so zu aktualisieren, dass HTTP/2-kompatible Verschlüsselungen verwendet werden. Weitere Informationen finden Sie unter TLS-Verschlüsselungssammlungen in Windows 8.1. Nach der Konfiguration muss HTTP/2 über TLS auf Kestrel aktiviert werden, indem der App-Kontextschalter Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2
festgelegt wird. Beispiel:
AppContext.SetSwitch("Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2", true);
Es wurde keine zugrunde liegende Unterstützung geändert. Beispielsweise hat HTTP/2 über TLS noch nie unter Windows 8 oder Windows Server 2012 gearbeitet. Diese Änderung ändert, wie Fehler in diesen nicht unterstützten Szenarien dargestellt werden.
Betroffene APIs
Nichts