我有一个使用客户端证书发出 HttpWebRequest 的小型控制台应用程序:
X509Certificate Cert = X509Certificate.CreateFromCertFile("JohnDoe.cer");
HttpWebRequest Request = (HttpWebRequest)
WebRequest.Create("https://10.135.12.166:4434");
Request.ClientCertificates.Add(Cert);
Request.UserAgent = "Client Cert Sample";
Request.Method = "GET";
HttpWebResponse Response = (HttpWebResponse) Request.GetResponse();
当我在我的机器上执行这段代码时,我将可以访问相应的 .pfx 文件,我相信使用了 this thread 中提到的东西我可以在我的机器上安装 pfx 文件,但我不想这样做。
有什么方法可以让我通过请求中附加的 pfx 证书发出此请求?我的意思是,只需将上面代码中的 JohnDoe.cer 替换为 JohnDoe.pfx 或类似的东西?
谢谢。
编辑:这个问题的全部要点是我想要一种使用证书的方法而无需将其安装在我的计算机上。我可以按照 esskar 和 xaver 建议的方式使用它,但我不想在我的机器上安装证书。如果这不可能做到,是否有人可以解释为什么我们不能这样做?
最佳答案
PFX 是一个容器,可以容纳一个或多个证书。 您可以使用以下代码在 C# 中打开它们
X509Certificate2Collection collection = new X509Certificate2Collection();
collection.Import("JohnDoe.pfx", "password-for-pfx", X509KeyStorageFlags.PersistKeySet);
现在遍历集合并找到您需要的证书
foreach (X509Certificate2 cert in collection)
{
// work with cert
}
这应该可以帮助您了解!
问题:
安装是什么意思?复制到机器上? 可以吗,把它放到你的程序中? 您不能仅使用 CER 文件,因为 CER 文件不包含您进行客户端身份验证所需的私钥。
关于c# - 在机器上没有安装 PFX 的情况下使用客户端证书发出 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25271876/