我正在使用HttpListener
来创建一个非常基本的Web服务器。我已经设置使用SSL使用httpcfg工具绑定到适当的端口和证书。这似乎工作正常。我现在想使用客户端证书身份验证。因此,我在GetClientCertificate
对象上添加了对HttpListenerRequest
的调用,但始终会返回null
。我的测试客户端非常简单:
HttpWebRequest webReq = (HttpWebRequest) WebRequest.Create("https://127.0.0.1:8080/ssltest/");
webReq.ClientCertificates.Add(new X509Certificate2("ssltest.pfx", "ssltest"));
webReq.GetResponse();
我注意到httpcfg工具有一个标志,指示是否应该协商客户端证书,所以我尝试指定该标志(-f 2
),但我仍然没有获得客户端证书。我也遇到了this Microsoft support issue这似乎非常相关,但我正在使用最新的.NET 2.0服务包,我也尝试了httpcfg标志,这两个都应该避免这个问题。
我假设我在这里遗漏了一些明显的东西。有什么想法吗?
编辑:我刚发现this question似乎非常相关(甚至可能是重复的?)。不幸的是,这个问题也没有被接受的答案。建议的答案提出了我已经尝试过的建议(带有相应标志的httpcfg工具)。
答案 0 :(得分:0)
根据http://support.microsoft.com/kb/895971/en-us,HttpWebRequest.ClientCertificates.Add
已执行验证,因此证书在客户端验证失败,永远不会被发送。
以上链接包含放宽验证的代码......绝对不要在生产中使用!!!