HttpSys: rinegoziazione del certificato client disabilitata per impostazione predefinita

La possibilità di rinegoziare una connessione e richiedere un certificato client è stata disabilitata per impostazione predefinita. Per informazioni, vedi il problema dotnet/aspnetcore#23181.

Versione introdotta

ASP.NET Core 5.0

Comportamento precedente

La connessione può essere rinegoziata per richiedere un certificato client.

Nuovo comportamento

I certificati client possono essere richiesti solo durante l'handshake di connessione iniziale. Per altre informazioni, vedi la pull request dotnet/aspnetcore#23162.

Motivo della modifica

La rinegoziazione ha causato una serie di problemi di prestazioni e deadlock. Inoltre, non è supportata in HTTP/2. Per un contesto aggiuntivo su quando l'opzione per controllare questo comportamento è stata introdotta in ASP.NET Core 3.1, vedi il problema dotnet/aspnetcore#14806.

Le app che richiedono certificati client devono usare netsh.exe per impostare l'opzione clientcertnegotiation su enabled. Per altre informazioni, vedi comandi http netsh.

Se vuoi abilitare i certificati client solo per alcune parti dell'app, vedi le indicazioni in Certificati client facoltativi.

Se hai bisogno del comportamento di rinegoziazione precedente, imposta HttpSysOptions.ClientCertificateMethod sul valore ClientCertificateMethod.AllowRenegotiate precedente. Questa operazione non è consigliata per i motivi descritti in precedenza e nelle linee guida collegate.

API interessate