我正在尝试获取此外部REST Web服务,该服务需要服务器端证书和私钥(我从发布者那里获得了该服务的*.pem
个文件。)
对于我的测试,我用Google搜索并找到了将这两个部分合并到*.pfx
文件中的方法 - 从磁盘上的二进制文件加载X509Certificate2
实例就可以了。
现在我试图将它放到我的生产Windows Server 2008上的Cert Store中。
我可以在我的C#代码中从证书商店获取X509Certificate2
- 没问题:
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
时,我必须提供一个密码 - 这里不需要提供任何密码 - 从cert商店加载时...奇怪....
似乎即使我导入了包含服务器端证书和私钥的*.pfx
,我也无法从证书存储中找回...
知道如何才能让它发挥作用吗?我是否需要在第二步中从证书存储区加载私钥?怎么样?
这些证书对我来说仍然是一个像伏都教一样大的神秘......谁能开导我?
答案 0 :(得分:4)
要检查的第一件事是查看证书存储区是否具有私钥。
接下来,如果私钥在商店中,那么访问证书的帐户可能没有私钥的权限。有两种方法可以检查: