Kestrel: HTTP/2 dinonaktifkan melalui TLS pada versi Windows yang tidak kompatibel
Untuk mengaktifkan HTTP/2 melalui Keamanan Lapisan Transportasi (TLS) pada Windows, dua persyaratan perlu dipenuhi:
- Dukungan Negosiasi Protokol Lapisan Aplikasi (ALPN), yang tersedia dimulai dengan Windows 8.1 dan Windows Server 2012 R2.
- Sekumpulan sandi yang kompatibel dengan HTTP/2, yang tersedia dimulai dengan Windows 10 dan Windows Server 2016.
Dengan demikian, perilaku Kestrel ketika HTTP/2 melalui TLS dikonfigurasi telah berubah menjadi:
- Turunkan ke
Http1
dan catat pesan diInformation
tingkat saat ListenOptions.HttpProtocols diatur keHttp1AndHttp2
.Http1AndHttp2
adalah nilai default untukListenOptions.HttpProtocols
. NotSupportedException
Lempar kapanListenOptions.HttpProtocols
diatur keHttp2
.
Untuk diskusi, lihat masalah dotnet/aspnetcore#23068.
Versi yang diperkenalkan
ASP.NET Core 5.0
Perilaku yang lama
Tabel berikut menguraikan perilaku saat HTTP/2 melalui TLS dikonfigurasi.
Protokol | Windows 7, Windows Server 2008 R2, atau yang lebih lama |
Windows 8, Windows Server 2012 |
Windows 8.1 Windows Server 2012 R2 |
Windows 10, Windows Server 2016, atau yang lebih baru |
---|---|---|---|---|
Http2 |
Melemparkan NotSupportedException |
Kesalahan selama jabat tangan TLS | Kesalahan selama jabat tangan TLS * | Tidak ada kesalahan |
Http1AndHttp2 |
Turunkan tingkat ke Http1 |
Turunkan tingkat ke Http1 |
Kesalahan selama jabat tangan TLS * | Tidak ada kesalahan |
* Konfigurasikan cipher suite yang kompatibel untuk mengaktifkan skenario ini.
Perilaku yang baru
Tabel berikut menguraikan perilaku saat HTTP/2 melalui TLS dikonfigurasi.
Protokol | Windows 7, Windows Server 2008 R2, atau yang lebih lama |
Windows 8, Windows Server 2012 |
Windows 8.1 Windows Server 2012 R2 |
Windows 10, Windows Server 2016, atau yang lebih baru |
---|---|---|---|---|
Http2 |
Melemparkan NotSupportedException |
Melemparkan NotSupportedException |
Melemparkan NotSupportedException ** |
Tidak ada kesalahan |
Http1AndHttp2 |
Turunkan tingkat ke Http1 |
Turunkan tingkat ke Http1 |
Turunkan tingkat ke Http1 ** |
Tidak ada kesalahan |
** Konfigurasikan suite sandi yang kompatibel dan atur sakelar Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2
konteks aplikasi ke true
untuk mengaktifkan skenario ini.
Alasan untuk berubah
Perubahan ini memastikan kesalahan kompatibilitas untuk HTTP/2 melalui TLS pada versi Windows yang lebih lama muncul sedini mungkin dan sejelas mungkin.
Tindakan yang direkomendasikan
Pastikan HTTP/2 melalui TLS dinonaktifkan pada versi Windows yang tidak kompatibel. Windows 8.1 dan Windows Server 2012 R2 tidak kompatibel karena tidak memiliki sandi yang diperlukan secara default. Namun, dimungkinkan untuk memperbarui pengaturan Konfigurasi Komputer untuk menggunakan cipher yang kompatibel dengan HTTP/2. Untuk informasi selengkapnya, lihat suite sandi TLS di Windows 8.1. Setelah dikonfigurasi, HTTP/2 melalui TLS di Kestrel harus diaktifkan dengan mengatur sakelar Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2
konteks aplikasi . Misalnya:
AppContext.SetSwitch("Microsoft.AspNetCore.Server.Kestrel.EnableWindows81Http2", true);
Tidak ada dukungan yang mendasar yang berubah. Misalnya, HTTP/2 melalui TLS tidak pernah berfungsi pada Windows 8 atau Windows Server 2012. Perubahan ini memodifikasi bagaimana kesalahan dalam skenario yang tidak didukung ini disajikan.
API yang Terpengaruh
Tidak ada
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk