Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чтобы включить HTTP/2 через защищённый транспортный уровень (TLS) в Windows, необходимо выполнить два условия:
- поддержка Application-Layer переговоров по протоколу (ALPN), которая доступна начиная с Windows 8.1 и Windows Server 2012 R2.
- Набор шифров, совместимых с HTTP/2, который доступен начиная с Windows 10 и Windows Server 2016.
Таким образом, поведение Kestrel при настройке HTTP/2 по протоколу TLS изменилось на:
- Понизьте до
Http1
и зафиксируйте на уровнеInformation
сообщение, когда ListenOptions.HttpProtocols установлено вHttp1AndHttp2
.Http1AndHttp2
— значение по умолчанию дляListenOptions.HttpProtocols
. - Создает исключение
NotSupportedException
, еслиListenOptions.HttpProtocols
задано значениеHttp2
.
Обсуждение можно найти в разделе dotnet/aspnetcore#23068.
Представленная версия
ASP.NET Core 5.0
Старое поведение
В следующей таблице описано поведение при настройке ПРОТОКОЛА HTTP/2 по протоколу TLS.
Протоколы | Windows 7, Windows Server 2008 R2, или раньше |
Windows 8, Windows Server 2012 |
Windows 8.1 Windows Server 2012 R2 |
Windows 10, Windows Server 2016, или новее |
---|---|---|---|---|
Http2 |
Бросать NotSupportedException |
Ошибка во время подтверждения TLS | Ошибка во время рукопожатия TLS * | Нет ошибки |
Http1AndHttp2 |
Понижение до Http1 |
Понижение до Http1 |
Ошибка во время рукопожатия TLS * | Нет ошибки |
* Настройте совместимые наборы шифров для включения этих сценариев.
Новое поведение
В следующей таблице описано поведение при настройке ПРОТОКОЛА HTTP/2 по протоколу TLS.
Протоколы | Windows 7, Windows Server 2008 R2, или раньше |
Windows 8, Windows Server 2012 |
Windows 8.1 Windows Server 2012 R2 |
Windows 10, Windows Server 2016, или новее |
---|---|---|---|---|
Http2 |
Бросать NotSupportedException |
Бросать NotSupportedException |
Брось NotSupportedException ** |
Нет ошибки |
Http1AndHttp2 |
Понижение до Http1 |
Понижение до Http1 |
Понижение до Http1 ** |
Нет ошибки |
Настройте совместимые наборы шифров и установите переключатель контекста приложения Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2
, чтобы включить эти сценарии true
.
Причина изменения
Это изменение гарантирует, что ошибки совместимости для HTTP/2 по протоколу TLS в более ранних версиях Windows отображаются как можно раньше и четко.
Рекомендуемое действие
Убедитесь, что протокол HTTP/2 по протоколу TLS отключен в несовместимых версиях Windows. Windows 8.1 и Windows Server 2012 R2 несовместимы, так как по умолчанию отсутствуют необходимые шифры. Однако можно обновить параметры конфигурации компьютера для использования совместимых шифров HTTP/2. Дополнительные сведения см. в наборах алгоритмов шифрования TLS в Windows 8.1. После настройки HTTP/2 по протоколу TLS в Kestrel необходимо включить, задав переключатель Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2
контекста приложения. Рассмотрим пример.
AppContext.SetSwitch("Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2", true);
Базовая поддержка не изменилась. Например, протокол HTTP/2 по протоколу TLS никогда не работал в Windows 8 или Windows Server 2012. Это изменение изменяет способ отображения ошибок в этих неподдерживаемых сценариях.
Затронутые API
Отсутствует