1

如果这是一个重复的问题,我提前道歉。我是新来的“行话”,HttpWebRequest我的谷歌搜索结果毫无结果。

前段时间我写了一个登录控制器,它利用HttpWebRequest. 当我在家里运行它时它工作正常。我从我公司的防火墙后面尝试了相同的登录控制器,它期望客户端身份验证证书能够通过。我在网上读到证书存在于我桌面的系统注册表中。果然,我可以打开 IE 和 Internet 选项-> 内容-> 证书,我可以在对话框窗口中看到 IE 正在使用的客户端证书来执行我想通过我的登录控制器完成的相同操作。

有人可以提供一个 C# 代码片段,显示将客户端证书从注册表添加到我的 HttpWebRequest 的方法吗?

例如,

var request = (HttpWebRequest) WebRequest.Create("https://www.someplace.com/Login");
                request.Credentials = CredentialCache.DefaultCredentials;
                request.ClientCertificates.Add(); //<---- ? how to add registry certs?
                request.KeepAlive = true;

等等

4

1 回答 1

1

这篇 MS 知识库文章涵盖了您需要的内容 -如何使用 HttpWebRequest 和 HttpWebResponse 类发送客户端证书

如文章中所述,您有两个选择:

  1. 使用X509Certificate该类从 .cer 文件中读取证书。
  2. 使用 CryptoAPI 调用直接从证书存储中提取证书信息。

第二种选择很麻烦,需要提高信任才能从证书中提取。店铺。所以如果可能的话,你会想要选择选项 1。像这样的东西:

X509Certificate Cert = X509Certificate.CreateFromCertFile("C:\\mycert.cer");
HttpWebRequest Request = (HttpWebRequest)WebRequest
                         .Create("https://YourServer/sample.asp");
Request.ClientCertificates.Add(Cert);
于 2013-05-31T04:49:09.923 回答