我在使用C#.NET设置X509证书方案时遇到了很多麻烦。在服务器上启用SSL,并且通过SSL建立连接。证书正通过request.ClientCertificates.Add()
添加到请求的商店。但是,没有客户端证书附加到握手请求(我通过HttpRequest.ClientCertificate
检查服务器的代码并通过分析Fiddler中的握手来确认)。
就我所知,这里的问题是服务器没有请求客户端证书。证书肯定在传出请求中,但我在握手时看不到任何一个,在服务器端没有看到 - 它们只是消失在以太网中。我知道选择证书背后的语义(感谢this page),但它没有解决我的问题。 CA应该是相同的;我为测试的每一端使用相同的自签名私钥安全证书。
显然我可以使用certutil.exe来检查在与给定服务器证书一起使用时将选择哪些证书。如果我能弄清楚如何使用它,这将是一个巨大的帮助。 Certutil是一个很难记录的大项目。任何帮助将不胜感激。
答案 0 :(得分:0)
如果您使用的是IIS服务器端,则必须提供服务器信任的证书。因此,您必须将客户端证书'CA证书添加到服务器计算机'根证书颁发机构的存储中。 IIS不能与自签名证书一起使用。它请求客户端证书提供其信任的CA列表。