我正在尝试获取这个外部 REST Web 服务,它需要服务器端证书和私钥(我从发布者那里获得了这两个作为*.pem
该服务的文件)。
对于我的测试,我用谷歌搜索并找到了一种将这两个部分组合成一个文件的方法——从磁盘上的二进制文件*.pfx
加载一个实例就可以了。X509Certificate2
现在我正试图将它放入我的生产 Windows Server 2008 上的 Cert Store。
我可以X509Certificate2
在我的 C# 代码中从证书商店获取 - 没问题:
X509Store store = new X509Store(StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindBySerialNumber, "serial-number-here", false);
if (certs.Count > 0)
{
X509Certificate2 cert = certs[0];
// set the certificate on the RestClient to call my REST service
_restClient.ClientCertificates.Add(cert);
}
store.Close();
但是当我这样做时,网络服务会向我吐槽,声称它需要一个“SSL证书”......
另外:当我X509Certificate2
从磁盘加载该*.pfx
文件时,我必须提供密码 - 从证书存储加载时,这里不需要提供任何内容......奇怪......
似乎即使我导入了*.pfx
包含服务器端证书和我们的私钥的文件,但不知何故我无法从证书存储中取回两者......
知道我怎样才能让它工作吗?我是否需要在第二步中从证书存储中加载私钥?如何?
这些证书对我来说仍然主要是一个像巫毒一样的大谜.....有人能启发我吗?