この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

X509Certificate2 クラス

 

公開日: 2016年10月

X.509 証明書を表します。

名前空間:   System.Security.Cryptography.X509Certificates
アセンブリ:  System (System.dll 内)

System.Object
  System.Security.Cryptography.X509Certificates.X509Certificate
    System.Security.Cryptography.X509Certificates.X509Certificate2

[SerializableAttribute]
public class X509Certificate2 : X509Certificate

名前説明
System_CAPS_pubmethodX509Certificate2()

X509Certificate2 クラスの新しいインスタンスを初期化します。

System_CAPS_pubmethodX509Certificate2(Byte[])

新しいインスタンスを初期化、 X509Certificate2 クラスのバイト配列から情報を使用します。

System_CAPS_pubmethodX509Certificate2(Byte[], SecureString)

新しいインスタンスを初期化、 X509Certificate2 クラスのバイト配列と、パスワードを使用します。

System_CAPS_pubmethodX509Certificate2(Byte[], SecureString, X509KeyStorageFlags)

新しいインスタンスを初期化、 X509Certificate2 クラスのバイト配列、パスワード、およびキー格納フラグを使用します。

System_CAPS_pubmethodX509Certificate2(Byte[], String)

新しいインスタンスを初期化、 X509Certificate2 クラスのバイト配列と、パスワードを使用します。

System_CAPS_pubmethodX509Certificate2(Byte[], String, X509KeyStorageFlags)

新しいインスタンスを初期化、 X509Certificate2 クラスのバイト配列、パスワード、およびキー格納フラグを使用します。

System_CAPS_pubmethodX509Certificate2(IntPtr)

新しいインスタンスを初期化、 X509Certificate2 クラスのアンマネージのハンドルを使用します。

System_CAPS_protmethodX509Certificate2(SerializationInfo, StreamingContext)

新しいインスタンスを初期化、 X509Certificate2 クラスの指定のシリアル化とストリーム コンテキスト情報を使用します。

System_CAPS_pubmethodX509Certificate2(String)

新しいインスタンスを初期化、 X509Certificate2 クラスの証明書ファイル名を使用します。

System_CAPS_pubmethodX509Certificate2(String, SecureString)

新しいインスタンスを初期化、 X509Certificate2 証明書ファイル名とパスワードを使用しています。

System_CAPS_pubmethodX509Certificate2(String, SecureString, X509KeyStorageFlags)

新しいインスタンスを初期化、 X509Certificate2 クラスの証明書ファイル名、パスワード、およびキー格納フラグを使用します。

System_CAPS_pubmethodX509Certificate2(String, String)

新しいインスタンスを初期化、 X509Certificate2 クラスの証明書ファイル名と証明書にアクセスするために使用するパスワードを使用します。

System_CAPS_pubmethodX509Certificate2(String, String, X509KeyStorageFlags)

新しいインスタンスを初期化、 X509Certificate2 証明書ファイルを使用してクラス名、パスワード、証明書およびキー格納フラグにアクセスするために使用します。

System_CAPS_pubmethodX509Certificate2(X509Certificate)

新しいインスタンスを初期化、 X509Certificate2 クラスを使用して、 X509Certificate オブジェクトです。

名前説明
System_CAPS_pubpropertyArchived

取得または X.509 証明書がアーカイブされることを示す値を設定します。

System_CAPS_pubpropertyExtensions

X509Extension オブジェクトのコレクションを取得します。

System_CAPS_pubpropertyFriendlyName

取得または証明書に関連付けられた別名を設定します。

System_CAPS_pubpropertyHandle

アンマネージによって記述された Microsoft Cryptographic API 証明書コンテキストを識別するハンドルを取得 PCCERT_CONTEXT 構造体。(X509Certificate から継承されます。)

System_CAPS_pubpropertyHasPrivateKey

示す値を取得するかどうか、 X509Certificate2 オブジェクトには、秘密キーが含まれています。

System_CAPS_pubpropertyIssuer

X.509v3 証明書を発行した証明機関の名前を取得します。(X509Certificate から継承されます。)

System_CAPS_pubpropertyIssuerName

証明書の発行者の識別名を取得します。

System_CAPS_pubpropertyNotAfter

その後、証明書が無効になった現地時刻で日付を取得します。

System_CAPS_pubpropertyNotBefore

証明書が有効となるローカル時間で日付を取得します。

System_CAPS_pubpropertyPrivateKey

取得または設定、 AsymmetricAlgorithm 証明書に関連付けられている秘密キーを表すオブジェクト。

System_CAPS_pubpropertyPublicKey

取得、 PublicKey 証明書に関連付けられているオブジェクト。

System_CAPS_pubpropertyRawData

証明書の生データを取得します。

System_CAPS_pubpropertySerialNumber

証明書のシリアル番号を取得します。

System_CAPS_pubpropertySignatureAlgorithm

証明書の署名の作成に使用されるアルゴリズムを取得します。

System_CAPS_pubpropertySubject

証明書からサブジェクトの識別名を取得します。(X509Certificate から継承されます。)

System_CAPS_pubpropertySubjectName

証明書からサブジェクトの識別名を取得します。

System_CAPS_pubpropertyThumbprint

証明書のサムプリントを取得します。

System_CAPS_pubpropertyVersion

証明書の X.509 形式のバージョンを取得します。

名前説明
System_CAPS_pubmethodDispose()

現在の X509Certificate オブジェクトによって使用されているすべてのリソースを解放します。(X509Certificate から継承されます。)

System_CAPS_protmethodDispose(Boolean)

この X509Certificate によって使用されているすべてのアンマネージ リソースを解放します。さらにマネージ リソースを解放することもできます。(X509Certificate から継承されます。)

System_CAPS_pubmethodEquals(Object)

2 つを比較して X509Certificate オブジェクトの等価性。(X509Certificate から継承されます。)

System_CAPS_pubmethodEquals(X509Certificate)

2 つを比較して X509Certificate オブジェクトの等価性。(X509Certificate から継承されます。)

System_CAPS_pubmethodExport(X509ContentType)

現在のエクスポート X509Certificate オブジェクトをバイト配列のいずれかで記述する形式で、 X509ContentType 値。(X509Certificate から継承されます。)

System_CAPS_pubmethodExport(X509ContentType, SecureString)

現在のエクスポート X509Certificate オブジェクトをバイト配列に指定した書式とパスワードを使用します。(X509Certificate から継承されます。)

System_CAPS_pubmethodExport(X509ContentType, String)

現在のエクスポート X509Certificate オブジェクトをバイト配列のいずれかで記述する形式で、 X509ContentType 値、および指定のパスワードを使用します。(X509Certificate から継承されます。)

System_CAPS_protmethodFinalize()

オブジェクトが、ガベージ コレクションによって収集される前に、リソースの解放とその他のクリーンアップ操作の実行を試みることができるようにします。(Object から継承されます。)

System_CAPS_pubmethodSystem_CAPS_staticGetCertContentType(Byte[])

バイト配列に格納されている証明書の種類を示します。

System_CAPS_pubmethodSystem_CAPS_staticGetCertContentType(String)

ファイルに格納されている証明書の種類を示します。

System_CAPS_pubmethodGetCertHash()

X.509v3 証明書のハッシュ値をバイト配列として返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetCertHashString()

X.509v3 証明書の SHA1 ハッシュ値を 16 進数文字列として返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetEffectiveDateString()

この X.509v3 証明書の発効日を返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetExpirationDateString()

この X.509v3 証明書の失効日を返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetFormat()

この X.509v3 証明書の形式の名前を返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetHashCode()

X.509v3 証明書の整数形式のハッシュ コードを返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetIssuerName()

互換性のために残されています。X.509v3 証明書を発行した証明機関の名前を返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetKeyAlgorithm()

この X.509v3 証明書の文字列形式のキー アルゴリズム情報を返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetKeyAlgorithmParameters()

X.509v3 証明書のバイト配列形式のキー アルゴリズム パラメーターを返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetKeyAlgorithmParametersString()

この X.509v3 証明書の 16 進数文字列形式のキー アルゴリズム パラメーターを返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetName()

互換性のために残されています。証明書の発行先であるプリンシパルの名前を返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetNameInfo(X509NameType, Boolean)

証明書からサブジェクトと発行者名を取得します。

System_CAPS_pubmethodGetPublicKey()

X.509v3 証明書のバイト配列形式の公開キーを返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetPublicKeyString()

X.509v3 証明書の 16 進数文字列形式の公開キーを返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetRawCertData()

X.509v3 証明書全体のバイト配列形式の生データを返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetRawCertDataString()

X.509v3 証明書全体の 16 進数文字列形式の生データを返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetSerialNumber()

X.509v3 証明書のバイト配列形式のシリアル番号を返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetSerialNumberString()

X.509v3 証明書の 16 進数文字列形式のシリアル番号を返します。(X509Certificate から継承されます。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_pubmethodImport(Byte[])

設定、 X509Certificate2 オブジェクトにバイト配列からのデータです。(X509Certificate.Import(Byte[]) をオーバーライドします。)

System_CAPS_pubmethodImport(Byte[], SecureString, X509KeyStorageFlags)

設定、 X509Certificate2 オブジェクトのデータをバイト配列、パスワード、およびキー格納フラグを使用しています。(X509Certificate.Import(Byte[], SecureString, X509KeyStorageFlags) をオーバーライドします。)

System_CAPS_pubmethodImport(Byte[], String, X509KeyStorageFlags)

設定、 X509Certificate2 オブジェクトの秘密キーをインポートする方法を決定するためのデータをバイト配列、パスワード、およびフラグを使用します。(X509Certificate.Import(Byte[], String, X509KeyStorageFlags) をオーバーライドします。)

System_CAPS_pubmethodImport(String)

設定、 X509Certificate2 証明書ファイルから情報を含むオブジェクト。(X509Certificate.Import(String) をオーバーライドします。)

System_CAPS_pubmethodImport(String, SecureString, X509KeyStorageFlags)

設定、 X509Certificate2 証明書ファイル、パスワード、およびキー格納フラグの情報を持つオブジェクト。(X509Certificate.Import(String, SecureString, X509KeyStorageFlags) をオーバーライドします。)

System_CAPS_pubmethodImport(String, String, X509KeyStorageFlags)

設定、 X509Certificate2 、パスワード、証明書ファイルから情報を持つオブジェクトと X509KeyStorageFlags 値。(X509Certificate.Import(String, String, X509KeyStorageFlags) をオーバーライドします。)

System_CAPS_protmethodMemberwiseClone()

現在の Object の簡易コピーを作成します。(Object から継承されます。)

System_CAPS_pubmethodReset()

状態をリセットする X509Certificate2 オブジェクトです。(X509Certificate.Reset() をオーバーライドします。)

System_CAPS_pubmethodToString()

X.509 証明書をテキスト形式で表示します。(X509Certificate.ToString() をオーバーライドします。)

System_CAPS_pubmethodToString(Boolean)

X.509 証明書をテキスト形式で表示します。(X509Certificate.ToString(Boolean) をオーバーライドします。)

System_CAPS_pubmethodVerify()

基本的な検証ポリシーを使用して X.509 チェーンの検証を実行します。

名前説明
System_CAPS_pubinterfaceSystem_CAPS_privmethodIDeserializationCallback.OnDeserialization(Object)

ISerializable インターフェイスを実装し、逆シリアル化が完了したときに逆シリアル化イベントによってコールバックされます。(X509Certificate から継承されます。)

System_CAPS_pubinterfaceSystem_CAPS_privmethodISerializable.GetObjectData(SerializationInfo, StreamingContext)

シリアル化情報と現在のインスタンスを再作成に必要なすべてのデータを取得 X509Certificate オブジェクトです。(X509Certificate から継承されます。)

名前説明
System_CAPS_pubmethodGetDSAPrivateKey()

X509Certificate2 から DSA 秘密キーを取得します。(DSACertificateExtensions によって定義されています。)

System_CAPS_pubmethodGetDSAPublicKey()

X509Certificate2 から DSA 公開キーを取得します。(DSACertificateExtensions によって定義されています。)

System_CAPS_pubmethodGetECDsaPrivateKey()

X509Certificate2 証明書の ECDsa 秘密キーを取得します。(ECDsaCertificateExtensions によって定義されています。)

System_CAPS_pubmethodGetECDsaPublicKey()

X509Certificate2 証明書の ECDsa 公開キーを取得します。(ECDsaCertificateExtensions によって定義されています。)

System_CAPS_pubmethodGetRSAPrivateKey()

X509Certificate2 から RSA 秘密キーを取得します。(RSACertificateExtensions によって定義されています。)

System_CAPS_pubmethodGetRSAPublicKey()

X509Certificate2 から RSA 公開キーを取得します。(RSACertificateExtensions によって定義されています。)

The X.509 structure originated in the International Organization for Standardization (ISO) working groups. This structure can be used to represent various types of information including identity, entitlement, and holder attributes (permissions, age, sex, location, affiliation, and so forth). Although the ISO specifications are most informative on the structure itself, the T:System.Security.Cryptography.X509Certificates.X509Certificate2 class is designed to model the usage scenarios defined in specifications issued by the Internet Engineering Task Force (IETF) Public Key Infrastructure, X.509 (PKIX) working group. The most informative of these specifications is RFC 3280, "Certificate and Certificate Revocation List (CRL) Profilehttp://go.microsoft.com/fwlink/?LinkId=45286."

System_CAPS_important重要

Starting with the net_v46, this type implements the T:System.IDisposable interface. When you have finished using the type, you should dispose of it either directly or indirectly. To dispose of the type directly, call its M:System.IDisposable.Dispose method in a try/catch block. To dispose of it indirectly, use a language construct such as using (in C#) or Using (in Visual Basic). For more information, see the “Using an Object that Implements IDisposable” section in the T:System.IDisposable interface topic.

For apps that target the net_v452 and earlier versions, the T:System.Security.Cryptography.X509Certificates.X509Certificate2 class does not implement the T:System.IDisposable interface and therefore does not have a Dispose method.

The following example demonstrates how to use an T:System.Security.Cryptography.X509Certificates.X509Certificate2 object to encrypt and decrypt a file.

using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.IO;
using System.Text;

// To run this sample use the Certificate Creation Tool (Makecert.exe) to generate a test X.509 certificate and 
// place it in the local user store. 
// To generate an exchange key and make the key exportable run the following command from a Visual Studio command prompt: 

//makecert -r -pe -n "CN=CERT_SIGN_TEST_CERT" -b 01/01/2010 -e 01/01/2012 -sky exchange -ss my
namespace X509CertEncrypt
{
    class Program
    {

        // Path variables for source, encryption, and
        // decryption folders. Must end with a backslash.
        private static string encrFolder = @"C:\Encrypt\";
        private static string decrFolder = @"C:\Decrypt\";
        private static string originalFile = "TestData.txt";
        private static string encryptedFile = "TestData.enc";

        static void Main(string[] args)
        {

            // Create an input file with test data.
            StreamWriter sw = File.CreateText(originalFile);
            sw.WriteLine("Test data to be encrypted");
            sw.Close();

            // Get the certifcate to use to encrypt the key.
            X509Certificate2 cert = GetCertificateFromStore("CN=CERT_SIGN_TEST_CERT");
            if (cert == null)
            {
                Console.WriteLine("Certificatge 'CN=CERT_SIGN_TEST_CERT' not found.");
                Console.ReadLine();
            }


            // Encrypt the file using the public key from the certificate.
            EncryptFile(originalFile, (RSACryptoServiceProvider)cert.PublicKey.Key);

            // Decrypt the file using the private key from the certificate.
            DecryptFile(encryptedFile, (RSACryptoServiceProvider)cert.PrivateKey);

            //Display the original data and the decrypted data.
            Console.WriteLine("Original:   {0}", File.ReadAllText(originalFile));
            Console.WriteLine("Round Trip: {0}", File.ReadAllText(decrFolder + originalFile));
            Console.WriteLine("Press the Enter key to exit.");
            Console.ReadLine();
        }
        private static X509Certificate2 GetCertificateFromStore(string certName)
        {

            // Get the certificate store for the current user.
            X509Store store = new X509Store(StoreLocation.CurrentUser);
            try
            {
                store.Open(OpenFlags.ReadOnly);

                // Place all certificates in an X509Certificate2Collection object.
                X509Certificate2Collection certCollection = store.Certificates;
                // If using a certificate with a trusted root you do not need to FindByTimeValid, instead:
                // currentCerts.Find(X509FindType.FindBySubjectDistinguishedName, certName, true);
                X509Certificate2Collection currentCerts = certCollection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);
                X509Certificate2Collection signingCert = currentCerts.Find(X509FindType.FindBySubjectDistinguishedName, certName, false);
                if (signingCert.Count == 0)
                    return null;
                // Return the first certificate in the collection, has the right name and is current.
                return signingCert[0];
            }
            finally
            {
                store.Close();
            }

        }

        // Encrypt a file using a public key.
        private static void EncryptFile(string inFile, RSACryptoServiceProvider rsaPublicKey)
        {
            using (AesManaged aesManaged = new AesManaged())
            {
                // Create instance of AesManaged for
                // symetric encryption of the data.
                aesManaged.KeySize = 256;
                aesManaged.BlockSize = 128;
                aesManaged.Mode = CipherMode.CBC;
                using (ICryptoTransform transform = aesManaged.CreateEncryptor())
                {
                    RSAPKCS1KeyExchangeFormatter keyFormatter = new RSAPKCS1KeyExchangeFormatter(rsaPublicKey);
                    byte[] keyEncrypted = keyFormatter.CreateKeyExchange(aesManaged.Key, aesManaged.GetType());

                    // Create byte arrays to contain
                    // the length values of the key and IV.
                    byte[] LenK = new byte[4];
                    byte[] LenIV = new byte[4];

                    int lKey = keyEncrypted.Length;
                    LenK = BitConverter.GetBytes(lKey);
                    int lIV = aesManaged.IV.Length;
                    LenIV = BitConverter.GetBytes(lIV);

                    // Write the following to the FileStream
                    // for the encrypted file (outFs):
                    // - length of the key
                    // - length of the IV
                    // - ecrypted key
                    // - the IV
                    // - the encrypted cipher content

                    int startFileName = inFile.LastIndexOf("\\") + 1;
                    // Change the file's extension to ".enc"
                    string outFile = encrFolder + inFile.Substring(startFileName, inFile.LastIndexOf(".") - startFileName) + ".enc";
                    Directory.CreateDirectory(encrFolder);

                    using (FileStream outFs = new FileStream(outFile, FileMode.Create))
                    {

                        outFs.Write(LenK, 0, 4);
                        outFs.Write(LenIV, 0, 4);
                        outFs.Write(keyEncrypted, 0, lKey);
                        outFs.Write(aesManaged.IV, 0, lIV);

                        // Now write the cipher text using
                        // a CryptoStream for encrypting.
                        using (CryptoStream outStreamEncrypted = new CryptoStream(outFs, transform, CryptoStreamMode.Write))
                        {

                            // By encrypting a chunk at
                            // a time, you can save memory
                            // and accommodate large files.
                            int count = 0;
                            int offset = 0;

                            // blockSizeBytes can be any arbitrary size.
                            int blockSizeBytes = aesManaged.BlockSize / 8;
                            byte[] data = new byte[blockSizeBytes];
                            int bytesRead = 0;

                            using (FileStream inFs = new FileStream(inFile, FileMode.Open))
                            {
                                do
                                {
                                    count = inFs.Read(data, 0, blockSizeBytes);
                                    offset += count;
                                    outStreamEncrypted.Write(data, 0, count);
                                    bytesRead += blockSizeBytes;
                                }
                                while (count > 0);
                                inFs.Close();
                            }
                            outStreamEncrypted.FlushFinalBlock();
                            outStreamEncrypted.Close();
                        }
                        outFs.Close();
                    }
                }
            }
        }


        // Decrypt a file using a private key.
        private static void DecryptFile(string inFile, RSACryptoServiceProvider rsaPrivateKey)
        {

            // Create instance of AesManaged for
            // symetric decryption of the data.
            using (AesManaged aesManaged = new AesManaged())
            {
                aesManaged.KeySize = 256;
                aesManaged.BlockSize = 128;
                aesManaged.Mode = CipherMode.CBC;

                // Create byte arrays to get the length of
                // the encrypted key and IV.
                // These values were stored as 4 bytes each
                // at the beginning of the encrypted package.
                byte[] LenK = new byte[4];
                byte[] LenIV = new byte[4];

                // Consruct the file name for the decrypted file.
                string outFile = decrFolder + inFile.Substring(0, inFile.LastIndexOf(".")) + ".txt";

                // Use FileStream objects to read the encrypted
                // file (inFs) and save the decrypted file (outFs).
                using (FileStream inFs = new FileStream(encrFolder + inFile, FileMode.Open))
                {

                    inFs.Seek(0, SeekOrigin.Begin);
                    inFs.Seek(0, SeekOrigin.Begin);
                    inFs.Read(LenK, 0, 3);
                    inFs.Seek(4, SeekOrigin.Begin);
                    inFs.Read(LenIV, 0, 3);

                    // Convert the lengths to integer values.
                    int lenK = BitConverter.ToInt32(LenK, 0);
                    int lenIV = BitConverter.ToInt32(LenIV, 0);

                    // Determine the start postition of
                    // the ciphter text (startC)
                    // and its length(lenC).
                    int startC = lenK + lenIV + 8;
                    int lenC = (int)inFs.Length - startC;

                    // Create the byte arrays for
                    // the encrypted AesManaged key,
                    // the IV, and the cipher text.
                    byte[] KeyEncrypted = new byte[lenK];
                    byte[] IV = new byte[lenIV];

                    // Extract the key and IV
                    // starting from index 8
                    // after the length values.
                    inFs.Seek(8, SeekOrigin.Begin);
                    inFs.Read(KeyEncrypted, 0, lenK);
                    inFs.Seek(8 + lenK, SeekOrigin.Begin);
                    inFs.Read(IV, 0, lenIV);
                    Directory.CreateDirectory(decrFolder);
                    // Use RSACryptoServiceProvider
                    // to decrypt the AesManaged key.
                    byte[] KeyDecrypted = rsaPrivateKey.Decrypt(KeyEncrypted, false);

                    // Decrypt the key.
                    using (ICryptoTransform transform = aesManaged.CreateDecryptor(KeyDecrypted, IV))
                    {

                        // Decrypt the cipher text from
                        // from the FileSteam of the encrypted
                        // file (inFs) into the FileStream
                        // for the decrypted file (outFs).
                        using (FileStream outFs = new FileStream(outFile, FileMode.Create))
                        {

                            int count = 0;
                            int offset = 0;

                            int blockSizeBytes = aesManaged.BlockSize / 8;
                            byte[] data = new byte[blockSizeBytes];

                            // By decrypting a chunk a time,
                            // you can save memory and
                            // accommodate large files.

                            // Start at the beginning
                            // of the cipher text.
                            inFs.Seek(startC, SeekOrigin.Begin);
                            using (CryptoStream outStreamDecrypted = new CryptoStream(outFs, transform, CryptoStreamMode.Write))
                            {
                                do
                                {
                                    count = inFs.Read(data, 0, blockSizeBytes);
                                    offset += count;
                                    outStreamDecrypted.Write(data, 0, count);

                                }
                                while (count > 0);

                                outStreamDecrypted.FlushFinalBlock();
                                outStreamDecrypted.Close();
                            }
                            outFs.Close();
                        }
                        inFs.Close();
                    }

                }

            }
        }

    }
}

The following example creates a command-line executable that takes a certificate file as an argument and prints various certificate properties to the console.

using System;
using System.Security.Cryptography;
using System.Security.Permissions;
using System.IO;
using System.Security.Cryptography.X509Certificates;


class CertInfo
{
	//Reads a file.
	internal static byte[] ReadFile (string fileName)
	{
		FileStream f = new FileStream(fileName, FileMode.Open, FileAccess.Read);
		int size = (int)f.Length;
		byte[] data = new byte[size];
		size = f.Read(data, 0, size);
		f.Close();
		return data;
	}
	//Main method begins here.
	static void Main(string[] args)
	{
		//Test for correct number of arguments.
		if (args.Length < 1)
		{
			Console.WriteLine("Usage: CertInfo <filename>");
			return;
		}
		try
		{
			X509Certificate2 x509 = new X509Certificate2();
			//Create X509Certificate2 object from .cer file.
			byte[] rawData = ReadFile(args[0]);

			x509.Import(rawData);

			//Print to console information contained in the certificate.
			Console.WriteLine("{0}Subject: {1}{0}", Environment.NewLine,x509.Subject);
			Console.WriteLine("{0}Issuer: {1}{0}", Environment.NewLine,x509.Issuer);
			Console.WriteLine("{0}Version: {1}{0}", Environment.NewLine,x509.Version);
			Console.WriteLine("{0}Valid Date: {1}{0}", Environment.NewLine,x509.NotBefore);
			Console.WriteLine("{0}Expiry Date: {1}{0}", Environment.NewLine,x509.NotAfter);
			Console.WriteLine("{0}Thumbprint: {1}{0}", Environment.NewLine,x509.Thumbprint);
			Console.WriteLine("{0}Serial Number: {1}{0}", Environment.NewLine,x509.SerialNumber);
			Console.WriteLine("{0}Friendly Name: {1}{0}", 								Environment.NewLine,x509.PublicKey.Oid.FriendlyName);
			Console.WriteLine("{0}Public Key Format: {1}{0}", 											Environment.NewLine,x509.PublicKey.EncodedKeyValue.Format(true));
			Console.WriteLine("{0}Raw Data Length: {1}{0}", Environment.NewLine,x509.RawData.Length);
			Console.WriteLine("{0}Certificate to string: {1}{0}", Environment.NewLine,x509.ToString(true));

			Console.WriteLine("{0}Certificate to XML String: {1}{0}", 								Environment.NewLine,x509.PublicKey.Key.ToXmlString(false));

			//Add the certificate to a X509Store.
			X509Store store = new X509Store();
			store.Open(OpenFlags.MaxAllowed);
			store.Add(x509);
			store.Close();
		}

		catch (DirectoryNotFoundException)
			{
				   Console.WriteLine("Error: The directory specified could not be found.");
			}
		catch (IOException)
			{
				Console.WriteLine("Error: A file in the directory could not be accessed.");
			}
		catch (NullReferenceException)
			{
				Console.WriteLine("File must be a .cer file. Program does not have access to that type of file.");
			}
	}

}

.NET Framework
2.0 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: