1

在 Windows 环境中的 .NET 上,如果 .pfx/.p12 包含私钥,则可以通过以下方式以编程方式将其安装到证书存储中(其中 rawData 是包含完整 .pfx/.p12 的字节数组,两者公钥和私钥,密码是.pfx/.p12的密码):

X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
X509Certificate2 certificate = new X509Certificate2(rawData, password, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
store.Open(OpenFlags.ReadWrite);
store.Add(certificate);
store.Close();

我希望在 Linux 环境中的 Mono 上做同样的事情。上面的代码在 Windows 上运行,只会在 Linux 上安装证书的公钥,而不是私钥。我已经能够使用 Mono 的 certmgr 实用程序手动安装 .p12 的私钥,但我正在寻找一种编程解决方案。

谢谢!

4

1 回答 1

1

抱歉,这个答案无法解决您的问题。Mono 不支持将私钥保存到证书存储区。在这个有趣的讨论中可以找到(高度)技术性的细节 。

在我的应用程序中,我最终将证书和私钥存储在数据库中,因为无论如何我的应用程序设计需要一种集中式证书存储。

于 2012-12-18T15:58:38.867 回答