2009-02-19 4 views
49

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

私はCERファイルを持っていますが、PFXを作成することもできます。私はこれが正しいと信じている

+0

Btw - 私はMakecertと信頼の詳細を知っています。プログラマチックなC#またはinstallshieldを使用して証明書をインストールする際の提案を探してください。ありがとう! –

+0

どのようにCプログラムでこれを行うには?ウィンドウ内の任意のAPI? – 2vision2

答えて

53

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

これは証明書を正常にインストールしますが、パーソナルストアの秘密キーの管理秘密キーオプションを開くと、「証明書にキーが見つかりません」というエラーが表示されます。 – mit

+0

私はこの答えを推測しました; X509Storeは使い捨てではないので、現在は無効です。 –

+0

@mit「この証明書に秘密鍵が見つかりません」という解決策を見つけましたか? – samir105

35

次は私にとって良い作品:

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

の代わりに昇格した権限を必要と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(); 
+0

ありがとうございます。これは実行時に(複数のインスタンスが)実行される自己ホスト型サービスで実行されるので、私にとっては好ましいものでした。 UACのプロンプトを表示する方法はありません。再度、感謝します! – CodeWarrior

関連する問題