Поделиться через


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

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

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

ASP.NET Core 5.0

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

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

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

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

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

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

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

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

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

Затронутые API