HttpSys: renegocjacja certyfikatu klienta jest domyślnie wyłączona
Opcja ponownego negocjowania połączenia i żądania certyfikatu klienta została domyślnie wyłączona. Aby zapoznać się z dyskusją, zobacz problem dotnet/aspnetcore#23181.
Wprowadzona wersja
ASP.NET Core 5.0
Stare zachowanie
Połączenie można renegocjować, aby zażądać certyfikatu klienta.
Nowe zachowanie
Certyfikaty klienta można żądać tylko podczas początkowego uzgadniania połączenia. Aby uzyskać więcej informacji, zobacz żądanie ściągnięcia dotnet/aspnetcore#23162.
Przyczyna wprowadzenia zmiany
Renegocjacja spowodowała szereg problemów z wydajnością i zakleszczaniem. Nie jest również obsługiwany w protokole HTTP/2. Aby uzyskać dodatkowy kontekst podczas kontrolowania tego zachowania w ASP.NET Core 3.1, zobacz problem dotnet/aspnetcore#14806.
Zalecana akcja
Aplikacje wymagające certyfikatów klienta powinny używać netsh.exe , aby ustawić clientcertnegotiation
opcję na enabled
. Aby uzyskać więcej informacji, zobacz netsh http commands (Polecenia netsh http).
Jeśli chcesz, aby certyfikaty klienta są włączone tylko dla niektórych części aplikacji, zapoznaj się ze wskazówkami w temacie Opcjonalne certyfikaty klienta.
Jeśli potrzebujesz starego zachowania renegocjacji, ustaw wartość HttpSysOptions.ClientCertificateMethod
na starą wartość ClientCertificateMethod.AllowRenegotiate
. Nie jest to zalecane z powodów opisanych powyżej i w połączonych wskazówkach.