我正在尝试将扩展名为 .p7b 的证书(smime)导入到 Windows 商店。

这是当前的代码

X509Certificate2 cert = new X509Certificate2(@"C:\test_public_cert.p7b");
X509Store store = new X509Store(StoreName.AddressBook, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(cert);

它给了我一个错误“找不到原始签名者”。



有人请帮助确定可能的根子句吗?

谢谢。

附注。 VS2010、Windows Server 2008 R2

Edit1:test_public_cert.p7b 是通过 mmc 控制台从另一台服务器上的公钥导出的。

最佳答案

我过去在 .p7b 扩展名中遇到过这个问题。我发现有两种方法可以解决这个问题。最后,我最终使用了数字 1。数字 2 是您通过导出到 .cer 已经发现的东西。您也可以尝试使用选项 3,但我不确定这是否完全有效。

1.
使用 SignedCms 而不是 X509Certificate 类。

查看更多详情 Enveloped PKCS #7 Signatures

2.
加载 .p7b 只包含证书文件,可能不包含私钥。在生成私钥的服务器上安装私钥,然后将其导出为 .pfx 文件并将其移动到您要使用的服务器。

3.
由于 .p7b 文件包含整个证书链而不仅仅是一个证书,您可以尝试使用以下方法将其添加到 Windows 商店。

X509Certificate2Collection certCollection = new X509Certificate2Collection();
certCollection.Import(@"C:\test_public_cert.p7b");
X509Store store = new X509Store(StoreName.AddressBook, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.AddRange(certCollection);

关于C#,无法将 .p7b 证书导入 Windows 商店,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22753703/

10-12 02:55