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:

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.

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.EnableWindows81Http2ayarlanarak 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