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