HttpSys: повторное согласование сертификата клиента, отключенное по умолчанию

Возможность повторного согласования подключения и запроса сертификата клиента по умолчанию отключена. Обсуждение этого вопроса см. на странице dotnet/aspnetcore#23181.

Представленные версии

ASP.NET Core 5.0

Старое поведение

Подключение можно повторно согласовать, чтобы запросить сертификат клиента.

Новое поведение

Сертификаты клиентов можно запросить только во время первоначального подтверждения соединения. Подробную информацию см. в описании запроса на внесение изменений dotnet/aspnetcore#23162.

Причина изменения

Повторное согласование привело к ряду проблем с производительностью и взаимоблокировкой. Оно также не поддерживается в HTTP/2. Расширенный контекст с момента реализации этого параметра для управления таким поведением в ASP.NET Core 3.1 см. на странице dotnet/aspnetcore#14806.

Приложения, для которых требуются сертификаты клиентов, должны использовать netsh.exe для присвоения параметру clientcertnegotiation значения enabled. Дополнительные сведения см. в разделе Команды netsh http.

Если необходимо включить сертификаты клиентов только для некоторых частей приложения, см. инструкции в разделе Дополнительные сертификаты клиента.

Если необходимо вернуть предыдущее поведение при повторном согласовании, задайте для HttpSysOptions.ClientCertificateMethod старое значение ClientCertificateMethod.AllowRenegotiate. Этот способ не рекомендуется по причинам, описанным выше и в соответствующем руководстве.

Затронутые API