Kestrel: UYUMSUZ Windows sürümlerinde TLS üzerinden HTTP/2 devre dışı bırakıldı
Windows'da Aktarım Katmanı Güvenliği (TLS) üzerinden HTTP/2'yi etkinleştirmek için iki gereksinimin karşılanması gerekir:
- Windows 8.1 ve Windows Server 2012 R2 ile başlayan Uygulama Katmanı Protokolü Anlaşması (ALPN) desteği.
- Windows 10 ve Windows Server 2016'dan itibaren kullanılabilen HTTP/2 ile uyumlu bir şifreleme kümesi.
Bu nedenle, TLS üzerinden HTTP/2 yapılandırıldığında Kestrel'in davranışı şu şekilde değiştirildi:
- ListenOptions.HttpProtocols olarak ayarlandığında düzeyine düşür
Http1
ve bir iletiyiInformation
günlüğeHttp1AndHttp2
kaydet.Http1AndHttp2
içinListenOptions.HttpProtocols
varsayılan değerdir. - olarak
ListenOptions.HttpProtocols
ayarlandığındaHttp2
birNotSupportedException
at.
Tartışma için bkz. sorun dotnet/aspnetcore#23068.
Sürüm kullanıma sunulmuştur
ASP.NET Core 5.0
Eski davranış
Aşağıdaki tabloda TLS üzerinden HTTP/2 yapılandırıldığındaki davranış özetlenmiştir.
Protokoller | Windows 7, Windows Server 2008 R2, veya daha önceki |
Windows 8, Windows Server 2012 |
Windows 8.1 Windows Server 2012 R2 |
Windows 10, Windows Server 2016, veya daha yeni |
---|---|---|---|---|
Http2 |
Atmak NotSupportedException |
TLS el sıkışması sırasında hata oluştu | TLS el sıkışması sırasında hata * | Hata yok |
Http1AndHttp2 |
Sürüme düşürme Http1 |
Sürüme düşürme Http1 |
TLS el sıkışması sırasında hata * | Hata yok |
* Bu senaryoları etkinleştirmek için uyumlu şifreleme paketlerini yapılandırın.
Yeni davranış
Aşağıdaki tabloda TLS üzerinden HTTP/2 yapılandırıldığındaki davranış özetlenmiştir.
Protokoller | Windows 7, Windows Server 2008 R2, veya daha önceki |
Windows 8, Windows Server 2012 |
Windows 8.1 Windows Server 2012 R2 |
Windows 10, Windows Server 2016, veya daha yeni |
---|---|---|---|---|
Http2 |
Atmak NotSupportedException |
Atmak NotSupportedException |
Atmak NotSupportedException ** |
Hata yok |
Http1AndHttp2 |
Sürüme düşürme Http1 |
Sürüme düşürme Http1 |
Sürüme düşürme Http1 ** |
Hata yok |
** Uyumlu şifreleme paketlerini yapılandırın ve bu senaryoları etkinleştirmek için uygulama bağlam anahtarını Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2
olarak true
ayarlayın.
Değişiklik nedeni
Bu değişiklik, eski Windows sürümlerinde TLS üzerinden HTTP/2 için uyumluluk hatalarının mümkün olduğunca erken ve net bir şekilde ortaya çıkarılmasını sağlar.
Önerilen eylem
Uyumsuz Windows sürümlerinde TLS üzerinden HTTP/2'nin devre dışı bırakıldığından emin olun. Windows 8.1 ve Windows Server 2012 R2, varsayılan olarak gerekli şifreleri eksik olduğundan uyumsuz durumdadır. Ancak, Bilgisayar Yapılandırması ayarlarını HTTP/2 uyumlu şifrelemeleri kullanacak şekilde güncelleştirmek mümkündür. Daha fazla bilgi için bkz . Windows 8.1'de TLS şifreleme paketleri. Yapılandırıldıktan sonra, Kestrel'de TLS üzerinden HTTP/2, uygulama bağlam anahtarı Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2
ayarlanarak etkinleştirilmelidir. Örneğin:
AppContext.SetSwitch("Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2", true);
Temel alınan destek değişmedi. Örneğin, TLS üzerinden HTTP/2, Windows 8 veya Windows Server 2012 üzerinde hiçbir zaman çalışmamıştır. Bu değişiklik, desteklenmeyen bu senaryolardaki hataların nasıl sunulduğunu değiştirir.
Etkilenen API’ler
Hiçbiri
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin