HttpListenerRequest未返回客户端证书

时间:2011-08-22 20:33:02

标签: c# ssl .net-2.0

我正在使用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工具)。

1 个答案:

答案 0 :(得分:0)

根据http://support.microsoft.com/kb/895971/en-usHttpWebRequest.ClientCertificates.Add已执行验证,因此证书在客户端验证失败,永远不会被发送。

以上链接包含放宽验证的代码......绝对不要在生产中使用!!!