■ 関連するクラス
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(); } } }
参考文献
http://www.atmarkit.co.jp/fdotnet/dotnettips/844addcert/addcert.htmlhttp://d.hatena.ne.jp/einhanderkz/20100128/1264683317
http://d.hatena.ne.jp/s-kita/20090418/1240027857
今後役に立ちそうなサイト
http://sqlazure.jp/r/google/462/http://tech.tanaka733.net/entry/must-load-user-profile-x509certificates2-ctor-with-bytearray-on-aspnet