我按照说明使用此处http://ondrej.wordpress.com/2010/01/24/iis-7-and-client-certificates/中的说明创建了CA和客户端证书。 IIS配置为接受客户端证书。未使用客户端证书映射。 我去年用IE 10测试了它,并且能够成功解析客户端证书。最近我回到了项目,发现证书不存在。 WireShark没有显示服务器请求客户端证书,而去年我能够看到服务器和客户端之间的证书流量。 我使用的代码很简单:
if (Request.ClientCertificate.IsPresent)
{
Console.WriteLine("Client Certificate found!");
}
else
{
Console.WriteLine("No Client Certificate found!");
}
有没有人见过这个问题,如果有的话是什么解决方案。在发布问题之前,我仔细阅读了有关客户端证书和IIS的几乎所有StackOverflow帖子,因此请回复一个建议,而不是我已经看过的帖子的链接。
ASP.NET Request.ClientCertificate returning empty on IIS 7
.NET application fails to send client certificate - Win 7 vs Win XP?
答案 0 :(得分:0)
我通过搜索系统事件日志找到了解决方案并找到了这个可疑条目:
36885当请求客户端身份验证时,此服务器会向客户端发送可信证书颁发机构列表。客户端使用此列表选择服务器信任的客户端证书。目前,该服务器信任这么多证书颁发机构,因此该列表已经变得太长了。因此该列表被截断。此计算机的管理员应检查受信任的证书颁发机构以进行客户端身份验证,并删除那些不需要信任的证书颁发机构。