默认情况下已禁用重新协商连接和请求客户端证书的选项。 有关讨论,请参阅问题 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
。 出于上述和链接指南中所述的原因,不建议这样做。