C#でX509Certificateクラスを使う

using System.Security.Cryptography.X509Certificates名前空間のX509Certificateクラスを使ってみる。
主に、X.509証明書を読み込んで証明書の内容を取得するために使用する。

  • X509Certificateクラスを使うための準備

  • Firefox バージョン3の場合
    1.メニューバーの「ツール」→「オプション」から「オプション」ダイアログを表示
    2.「オプション」ダイアログのメニューバー(ダイアログの上のほうにあるアイコンが並んでいるところ)から一番右側にある「詳細」を選択する

    3.「暗号化」タブの「証明書」グループボックスから「証明書を表示」ボタンをクリックする


    4.「証明書マネージャ」から「認証局証明書」タブを表示
    5.「証明書名と発行者名」のリストから適当な証明書を選択する。ここでは、例として、RSA Security Incの「RSA Security 2048 v3」を選択する


    6.証明書を選択したら、証明書マネージャの「エクスポート」ボタンから証明書を適当なフォルダにエクスポートする。このとき「証明書をファイルに保存」が表示されるが、ファイル名が「BuiltinObjectToken-RSASecurity1024v3.crt」になる。





    ここまでが、System.Security.Cryptography.X509Certificates.X509Certificateクラスを使うための準備




    実際にエクスポートしたX.509証明書から情報を取得して表示するコードは、以下の通り

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Security.Cryptography.X509Certificates;
    
    class Program
    {
        public static void Main()
        {
            //X509Certificateオブジェクトを生成する。
            //X509Certificate.CreateFromCertFileの引数には、
            //エクスポートしたファイル名を指定する。
            X509Certificate x509 = 
                X509Certificate.CreateFromCertFile(@"BuiltinObjectToken-RSASecurity2048v3.crt");
    
    
            Console.WriteLine("X.509v3証明書の発行先であるプリンシパルの名前(古い形式)");
            Console.WriteLine(x509.GetName());
            Console.WriteLine(Environment.NewLine);
    
    
            Console.WriteLine("X.509v3証明書を発行した証明機関の名前");
            Console.WriteLine(x509.Issuer);
            Console.WriteLine(Environment.NewLine);
    
    
            Console.WriteLine("X.509v3証明書のサブジェクトの識別名");
            Console.WriteLine(x509.Subject);
            Console.WriteLine(Environment.NewLine);
            
    
            Console.WriteLine("X.509v3証明書のハッシュ値の16進文字列");
            Console.WriteLine(x509.GetCertHashString());
            Console.WriteLine(Environment.NewLine);
    
            
            Console.WriteLine("X.509v3証明書の発効日");
            Console.WriteLine(x509.GetEffectiveDateString());
            Console.WriteLine(Environment.NewLine);
    
    
            Console.WriteLine("X.509v3証明書の失効日");
            Console.WriteLine(x509.GetExpirationDateString());
            Console.WriteLine(Environment.NewLine);
    
    
            Console.WriteLine("X.509v3証明書を発行した証明機関の名前(古い形式)");
            Console.WriteLine(x509.GetIssuerName());
            Console.WriteLine(Environment.NewLine);
            
    
            Console.WriteLine("X.509v3証明書のキーアルゴリズム情報");
            Console.WriteLine(x509.GetKeyAlgorithm());
            Console.WriteLine(Environment.NewLine);
            
            
            Console.WriteLine("X.509v3証明書のキーアルゴリズムパラメータ");
            Console.WriteLine(x509.GetKeyAlgorithmParametersString());
            Console.WriteLine(Environment.NewLine);
            
            
            Console.WriteLine("X.509v3証明書の公開鍵");
            Console.WriteLine(x509.GetPublicKeyString());
            Console.WriteLine(Environment.NewLine);
    
    
            Console.WriteLine("X.509v3証明書のシリアル番号");
            Console.WriteLine(x509.GetSerialNumberString());
            Console.WriteLine(Environment.NewLine);
    
            
            Console.WriteLine("X.509v3証明書の形式の名前");
            Console.WriteLine(x509.GetFormat());
            Console.WriteLine(Environment.NewLine);
    
    
            Console.WriteLine("X.509証明書全体の生データ");
            Console.WriteLine(x509.GetRawCertDataString());
            Console.WriteLine(Environment.NewLine);
        }
    }


  • 実行結果
  • 
    X.509v3証明書の発行先であるプリンシパルの名前(古い形式)
    O=RSA Security Inc, OU=RSA Security 2048 V3
    
    
    X.509v3証明書を発行した証明機関の名前
    OU=RSA Security 2048 V3, O=RSA Security Inc
    
    
    X.509v3証明書のサブジェクトの識別名
    OU=RSA Security 2048 V3, O=RSA Security Inc
    
    
    X.509v3証明書のハッシュ値の16進文字列
    25019019CFFBD9991CB76825748D945F30939542
    
    
    X.509v3証明書の発効日
    2001/02/23 5:39:23
    
    
    X.509v3証明書の失効日
    2026/02/23 5:39:23
    
    
    X.509v3証明書を発行した証明機関の名前(古い形式)
    O=RSA Security Inc, OU=RSA Security 2048 V3
    
    
    X.509v3証明書のキーアルゴリズム情報
    1.2.840.113549.1.1.1
    
    
    X.509v3証明書のキーアルゴリズムパラメータ
    0500
    
    
    X.509v3証明書の公開鍵
    3082010A0282010100B78F5571D280DD7B6979A7F01850323C6267F60A9507DDE61BF39ED9D24154
    6BAD9F7CBE19CDFB46AB41681E18EA55C82F91788928FB272960FFDF8F8C3BC9499BB5A494CE01EA
    3EB5637B7F26FD19DDC021BD84D12D4F46C34EDCD837393B28AFCB9D1AEA2BAF21A5C12322B8B81B
    5A13875783D1F020E7E84F2342B000A57D89E9E9617394987126BC2D6AE0F74DF0F1B62A3831810D
    29E100C1510F4C52F8045AAA7D72D3B8872ABB6310032AB3A14F0D5A5E46B73D0EF574EC999FF93D
    248188A6DD6054E895363DC609939AA312800055991947BDD0A57CC3BAFB1FF7F50FF8ACB9B5F437
    981318DE855BB70C823B876F95395830DA6E01681722CCC00B0203010001
    
    
    X.509v3証明書のシリアル番号
    0A0101010000027C0000000A00000002
    
    
    X.509v3証明書の形式の名前
    X509
    
    
    X.509証明書全体の生データ
    3082036130820249A00302010202100A0101010000027C0000000A00000002300D06092A864886F7
    0D0101050500303A31193017060355040A131052534120536563757269747920496E63311D301B06
    0355040B13145253412053656375726974792032303438205633301E170D30313032323232303339
    32335A170D3236303232323230333932335A303A31193017060355040A1310525341205365637572
    69747920496E63311D301B060355040B131452534120536563757269747920323034382056333082
    0122300D06092A864886F70D01010105000382010F003082010A0282010100B78F5571D280DD7B69
    79A7F01850323C6267F60A9507DDE61BF39ED9D241546BAD9F7CBE19CDFB46AB41681E18EA55C82F
    91788928FB272960FFDF8F8C3BC9499BB5A494CE01EA3EB5637B7F26FD19DDC021BD84D12D4F46C3
    4EDCD837393B28AFCB9D1AEA2BAF21A5C12322B8B81B5A13875783D1F020E7E84F2342B000A57D89
    E9E9617394987126BC2D6AE0F74DF0F1B62A3831810D29E100C1510F4C52F8045AAA7D72D3B8872A
    BB6310032AB3A14F0D5A5E46B73D0EF574EC999FF93D248188A6DD6054E895363DC609939AA31280
    0055991947BDD0A57CC3BAFB1FF7F50FF8ACB9B5F437981318DE855BB70C823B876F95395830DA6E
    01681722CCC00B0203010001A3633061300F0603551D130101FF040530030101FF300E0603551D0F
    0101FF040403020106301F0603551D2304183016801407C35130A4AAE945AE3524FAFF242C33D0B1
    9D8C301D0603551D0E0416041407C35130A4AAE945AE3524FAFF242C33D0B19D8C300D06092A8648
    86F70D010105050003820101005F3E86766EB8353C4E361C1E7998BFFDD5121179520EEE3189BCDD
    7FF9D1C61521E88A01540D3AFB54B9D663D4B1AA964DA2424DD4531F8B10DE7F65BE6013277188A4
    73E38463D1A455E15093E61B0E79D067BC46C8BF3F170D95E6C69069DEE7B42FDE957DD0123F3D3E
    7F4D3F1468F51150D5C1F490A5081D3160FF608C23540AAFFEA16EC5D17A2A6878CF1E820A20B41F
    ADE585B26A68754EAD25379485BEBDA1D4EAB70C4B3C9DE81200F05FAC0DE1AC706373F77F799F32
    254274058028BFBDC124965815B11721E9894BDB078867F415AD703E2F4D853BC2B7DBFE98682389
    E1740FDEF4C58463291BCCCB07C900A4A9D7C2224F67D777EC200561DE