以下のコードを使用して pfx ファイルをインストールしています (パスワードと certPath がメソッドに渡されます)。
X509Certificate2 cert = password != string.Empty ? new X509Certificate2(certPath, password) : new X509Certificate2(certPath);
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
一部のマシンではこれが機能しますが、他の環境では毎回失敗します。例外はスローされませんが、mmc.exe をロードして証明書スナップインを追加すると、証明書が正しくインストールされていないようです。正しいストアの下に表示されますが、証明書を右クリックして [すべてのタスク] > [秘密鍵の管理] に移動すると、[オブジェクトが見つかりませんでした] というダイアログ ボックスが表示されます。イベント ビューアには何も記録されておらず、正しく実行されているように見えるコードをステップ実行しています。
FindPrivateKey.exe もキーの検索に失敗します。
この証明書が機能する環境と同一のように見える一部のマシンで、この証明書が実行されない原因は何ですか?
証明書スナップイン内からキーを削除して再インポートすると機能しますが、C# コードから確実に機能させるにはこれが必要です。
編集 - 失敗している証明書にはパスワードが含まれていることを追加する必要があります。これは、コードの最初の行が効果的であることを意味します。
X509Certificate2 cert = new X509Certificate2(certPath, password);