【C#】 OS内の証明書を一覧表示する

■ 関連するクラス

X509Certificate2 クラス

デジタル証明書(X.509 証明書)
https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.x509certificates.x509certificate2.aspx

X509Store クラス

証明書ストア(デジタル証明書の保存場所)
https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.x509certificates.x509store.aspx
X509Storeコンストラクタの第一引数:証明書ストア
 * StoreName.My:個人
 * StoreName.Root:信頼されたルート証明機関
 * StoreName.CertificateAuthority:中間証明機関
 * StoreName.AddressBook:ほかの人
 * StoreName.TrustedPublisher:信頼された発行元
 * StoreName.Disallowed:信頼されていない証明書
 * StoreName.AuthRoot:サードパーティ・ルート証明機関
 * StoreName.TrustedPeople:信頼されたユーザー
X509Storeコンストラクタの第二引数:証明書ストアの種類
 * StoreLocation.CurrentUser:現在のユーザーに割り当てられる証明書ストア
 * StoreLocation.LocalMachine:ローカル・マシンに割り当てられた証明書ストア

X509Certificate2Collection クラス

https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.x509certificates.x509certificate2collection.aspx

■ サンプル

using System;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Windows.Forms;

namespace SampleDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var x509Store = new X509Store(StoreName.Root, StoreLocation.CurrentUser);
            x509Store.Open(OpenFlags.ReadOnly);

            var stringBuilder = new StringBuilder();
            foreach (var certificate in x509Store.Certificates)
            {
                // X.509v3証明書のシリアル番号
                stringBuilder.Append(certificate.GetSerialNumber());
                stringBuilder.Append(" ");
                // X.509v3証明書を発行した証明機関の名前
                stringBuilder.Append(certificate.Issuer);
                stringBuilder.Append(" ");
                // X.509v3証明書のサブジェクトの識別名
                stringBuilder.Append(certificate.Subject);
                stringBuilder.Append(" ");
                // X.509v3証明書のハッシュ値の16進文字列
                stringBuilder.Append(certificate.GetCertHashString());
                stringBuilder.Append(" ");
                // X.509v3証明書の発効日
                stringBuilder.Append(certificate.GetEffectiveDateString());
                stringBuilder.Append(" ");
                // X.509v3証明書の失効日
                stringBuilder.Append(certificate.GetExpirationDateString());
                stringBuilder.Append(" ");
                // X.509v3証明書のキーアルゴリズム情報
                stringBuilder.Append(certificate.GetKeyAlgorithm());
                stringBuilder.Append(" ");
                // X.509v3証明書の公開鍵
                //stringBuilder.Append(certificate.GetPublicKeyString());
                //stringBuilder.Append(" ");
                // X.509v3証明書の形式の名前
                stringBuilder.Append(certificate.GetFormat());
                stringBuilder.Append(" ");
                // X.509証明書全体の生データ
                //stringBuilder.Append(certificate.GetRawCertDataString());
                //stringBuilder.Append(" ");

                stringBuilder.AppendLine();
            }

            textBox1.Text = stringBuilder.ToString();
        }
    }
}


関連記事

C#】 レスポンスから証明書を作成する

https://blogs.yahoo.co.jp/dk521123/36987774.html