web-dev-qa-db-ja.com

c#を使用してプログラムでローカルマシンストアに証明書をインストールするにはどうすればよいですか?

MakeCertで生成された証明書があります。 PeerTrustを使用して、この証明書をWCFメッセージセキュリティに使用します。 c#または.NETを使用して、プログラムを使用して、プログラムを「信頼できる人」のローカルマシン証明書ストアに証明書をインストールできますか?

CERファイルを持っていますが、PFXを作成することもできます。

53
J Davis

私はこれが正しいと信じています:

using (X509Store store = new X509Store(StoreName.TrustedPeople, StoreLocation.LocalMachine)) 
{
   store.Open(OpenFlags.ReadWrite);
   store.Add(cert); //where cert is an X509Certificate object
}
58
Demi

以下は私にとって良い作品です:

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();
}
38

昇格された特権を必要とするLocalMachineに証明書をインストールする代わりに、「CurrentUser」に追加できます(私のために機能します)。

X509Store store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite);
store.Add(cert); //where cert is an X509Certificate object
store.Close();
7
user1799563

X509KeyStorageFlagsを使用する必要がありました。PersistKeySet| 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();
}

この記事のおかげで: 証明書ストア内の証明書の秘密鍵は読み取り不可

1
Dmitry