58

我有一个通过 MakeCert 生成的证书。我想使用 PeerTrust 将此证书用于 WCF 消息安全性。如何使用 c# 或 .NET 以编程方式将证书安装到“受信任的人”本地计算机证书存储中?

我有一个 CER 文件,但也可以创建一个 PFX。

4

4 回答 4

63

我相信这是正确的:

using (X509Store store = new X509Store(StoreName.TrustedPeople, StoreLocation.LocalMachine)) 
{
   store.Open(OpenFlags.ReadWrite);
   store.Add(cert); //where cert is an X509Certificate object
}
于 2009-02-19T20:42:28.997 回答
43

以下对我有用:

private static void InstallCertificate(string cerFileName)
{
    X509Certificate2 certificate = new X509Certificate2(cerFileName);
    X509Store store = new X509Store(StoreName.TrustedPublisher, StoreLocation.LocalMachine);

    store.Open(OpenFlags.ReadWrite);
    store.Add(certificate);
    store.Close();
}
于 2009-09-10T22:15:07.717 回答
7

您可以将证书添加到“CurrentUser”(对我有用),而不是将证书安装到需要提升权限的 LocalMachine。

X509Store store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite);
store.Add(cert); //where cert is an X509Certificate object
store.Close();
于 2013-09-13T08:56:14.497 回答
4

我不得不使用 X509KeyStorageFlags。持久键集| X509KeyStorageFlags。MachineKeySet标志以解决稍后在尝试使用证书时发生的“密钥集不存在”错误:

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

感谢这篇文章:证书存储中证书的私钥不可读

于 2018-07-05T16:37:35.910 回答