HttpSys: renegociação de certificado do cliente desabilitada por padrão

A opção de renegociar uma conexão e solicitar um certificado de cliente foi desabilitada por padrão. Para discussão, consulte o problema dotnet/aspnetcore#23181.

Versão introduzida

ASP.NET Core 5.0

Comportamento antigo

A conexão pode ser renegociada para solicitar um certificado de cliente.

Novo comportamento

Os certificados de cliente só podem ser solicitados durante o handshake de conexão inicial. Para saber mais, confira a solicitação de pull dotnet/aspnetcore#23162.

Motivo da alteração

A renegociação causou uma série de problemas de desempenho e deadlock. Também não há suporte em HTTP/2. Para obter contexto adicional sobre quando a opção para controlar esse comportamento foi introduzida no ASP.NET Core 3.1, consulte o problema dotnet/aspnetcore#14806.

Os aplicativos que exigem certificados de cliente devem usar o arquivo netsh.exe para definir a opção clientcertnegotiation como enabled. Para saber mais, confira comandos netsh http.

Se você quiser que os certificados do cliente sejam habilitados para apenas algumas partes do seu aplicativo, consulte as diretrizes contidas em Certificados de cliente opcionais.

Se você precisar do comportamento antigo de renegociação, defina HttpSysOptions.ClientCertificateMethod com o valor ClientCertificateMethod.AllowRenegotiate antigo. Esse procedimento não é recomendado pelos motivos expostos acima e nas diretrizes vinculadas.

APIs afetadas