証明書ストアで表示される様々なフォルダー([信頼された発行元]などの電子証明書をインポートする場所)が、どのようにWindows内で管理されているか、削除や変更する場合は、どうしたら良いのかについて調べた結果を備忘録的に投稿します。
証明書ストアの作成
例えば、次のコードを実行した場合に新しく”newstore”という証明書ストアが追加されます。
X509Store store = new X509Store("newstore", StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite);
store.Close();
実際に、mmcで証明書ストアを表示すると
作成されたフォルダーを確認することができる。しかし、作成した証明書ストアを削除する方法が見当たらない。
作成できたX509Storeクラスには、削除するメソッド、プロシージャがなく、X509Certificate2などの証明書を取り扱うクラスにも証明書ストアを削除するようなメソッドが見つからない。
証明書ストアの削除
実際の証明書ストアはレジストリで管理されており、以下のサブキーをレジストリエディタなどで開いてみると、ストアの内容が表示される。
現在のユーザー
HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates
ローカル コンピュータ
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates
ローカル コンピュータ上のサービス([サービス名])
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Services\[サービス名]\SystemCertificates
例えば、新しく作成した証明書ストア”newstore”は実際にレジストリエディタで開いてみると、次のように表示される。
当然、レジストリエディタで[newstore]サブキーを削除すると、MMC上の証明書ストアも表示されなくなります。(レジストリの削除操作は自己責任でお願いします)
まとめ
証明書ストアを調べてみると、その実態はWindows上で管理されている、ファイルやレジストリ、メモリデータなどの複合的な資源で管理されているらしく、証明書ストアはレジストリキーです。
レジストリエディタから直接削除することができるので、Openメソッドで誤って作成してしまった、ストア名などを削除する際に参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。