7.20.1 証明書の概要
証明書とは何か
証明書は所有者(対象名)を識別し、証明書の使用を制御する情報でラベル付けされた公開鍵です。
自己署名証明書とは何か
自己署名証明書とは、発行者名(署名者)と対象名(所有者)が同一の証明書です。
証明書がCA証明書になるのはどのような場合か?
他の証明書を発行するために使用される場合です。
また、証明書を発行する役割をサポートする情報(拡張)(CRLDistPoint、BasicConstraintsなど)が含まれます。
CAフラグをtrueに設定した拡張、BasicConstraints、も含まれていなければなりません。
ルートまたは最上位のCA証明書は自己署名されています。
証明書のサムプリントとは何か
証明書のサムプリントは証明書全体に計算されたハッシュです。
このサムプリントは証明書が表示されるたびに計算されます。証明書には含まれていません。
証明書の中には何が入りますか?
X.509標準では、どんな情報を証明書に含めることができるかが定義されており、その書き方(データ フォーマット)も説明されています。
すべてのX.509証明書には署名の他に以下のデータが含まれています。
バージョン |
証明書にX.509標準のどのバージョンが適用されているかを特定します。これは証明書に指定できる情報に影響します。 |
シリアルナンバー |
証明書を作成した実体は、実体が発行する他の証明書と区別するために、証明書にシリアルナンバーを割り当てる責任があります。この情報は様々な方法で使用されます。例えば、証明書が無効となった場合、証明書失効リスト(CRL)にそのシリアルナンバーが入れられます。 |
署名アルゴリズム識別子 |
このアルゴリズムは、CAが証明書に署名するときに使用されます。 |
発行者名 |
証明書に署名した実体の名称。 |
有効期間 |
それぞれの証明書は限られた期間内にのみ有効です。 |
対象名 |
証明書により識別された公開鍵の実体の名称。 |
対象の公開鍵 |
名前をつけられた実体の公開鍵と、その鍵が属する公開鍵暗号化システムのアルゴリズム識別子および関連キー パラメータ。 |
バージョン
バージョン1は1988から提供され、広く頒布されており、最も一般的です。
バージョン2では、対象名や発行者名を何度も再利用する可能性に対応するために、対象と発行者に対する一意の識別子の概念が導入されました。ほとんどの証明書のプロファイル文書では、名前を再利用しないことと、証明書が一意の識別子を使用しないことを強く推奨しています。バージョン2の証明書はあまり広く使用されていません。
バージョン3は最も新しく(1996)、拡張の概念をサポートしています。これにより、誰でも拡張を定義して証明書に組み込むことができます。
現在使用されている一般的な拡張には以下が含まれます。
· KeyUsage (キーの使用を、「署名のみ」というように、特定の目的に制限します)。
· AlternativeNames (他の識別子にも公開鍵への関連付けを許可します。例:DNS名、電子メール アドレス、IPアドレス)。
拡張はcriticalに指定でき、その拡張をチェックし実行/使用するよう指示できます。
例えば、証明書でcriticalに指定された拡張、KeyUsage、が"keyCertSign"に設定されている場合、この証明書がSSL通信中に提示されても拒否されます。証明書の拡張が、関連する秘密鍵は証明書への署名のみに使用するべきで、SSLには使用しないということを示しているからです。
フォーマットのエンコード
証明書内のすべてのデータはASN.1/DERという2つの関連する標準を使用してエンコードされています。Abstract Syntax Notation 1はデータを記述します。Definite Encoding Rulesは、そのデータを保管し転送する単一の方法を記述します。
X.500、X.509、およびX.520の各標準では、構造はAbstract Syntax Notation 1 (ASN.1)で指定されて、ASN.1を8ビットのバイナリ データとしてエンコードするBasic Encoding Rules (BER)を使用して、転送のためにエンコードされます。
また、証明書管理のように、構造が署名されるデータを表す場合、Distinguished Encoding Rules (DER:BERのサブセットで、同じデータは常に同じバイナリ表記にエンコードされるというプロパティを持つ)を使用してエンコードされたデータに基づいて署名が計算されます。
証明書に保管されている情報はASN.1オブジェクトのシーケンスで、それぞれがオブジェクト識別子(OID)でラベル付けされています。
オブジェクト識別子は一意のオブジェクト(例えば企業の証明書実務の記述)を識別する数字の文字列です。
OIDは国際標準化機構(ISO)の登録認定機関により管理されています。
この機関は、ISOが地域の登録認定機関に委任する場合もあります。
OIDはドット表記の階層的な数字の列です。
最上位のOIDの割り当ては以下のとおりです。
|
0 |
ITU-Tによる割り当て |
1 |
ISOによる割り当て | |
2 |
ISO/ITU-Tによる共同割り当て |
2次レベルの割り当ては以下のとおりです。
|
2.5 |
X.500ディレクトリ サービス |
その他のレベルの割り当ては以下のとおりです。
|
2.5.4 |
X.500属性タイプのオブジェクト識別子 |
2.5.4.3 |
通称 | |
2.5.4.5 |
シリアルナンバー | |
2.5.4.6 |
国名 | |
2.5.4.7 |
地域 | |
2.5.4.8 |
州 | |
2.5.4.10 |
組織 | |
2.5.4.11 |
組織単位 |
|
2.5.29 |
バージョン3拡張のオブジェクト識別子 |
2.5.29.14 |
対象公開鍵識別子 | |
2.5.29.15 |
キー用途 | |
2.5.29.17 |
対象の代替名称 | |
2.5.29.19 |
基本的制限 | |
2.5.29.35 |
機関キー識別子 |
以下は一般的BERビューアを使用して表示した証明書です。
CriticalおよびNon-criticalの拡張
拡張がcriticalである場合、示された目的にのみ使用が可能です。
拡張がnon-criticalの場合はアドバイスのフィールドで制限ではありません。
標準CAの[キー使用法]ダイアログ
|
標準証明書の[キー使用法]ダイアログ
|
キー使用法
criticalのキー使用法の拡張は、公開鍵の使用方法を制御します。
RFC 2459インターネットX.509PKI証明書とCRLのプロファイルには、いろいろなキー使用法の拡張部分のビットの説明が記述されています。
CRLでの署名の検証に公開鍵が使用される場合、[CRL署名]を有効にします。CA証明書の場合も有効になります。
ユーザー・データの暗号化に暗号鍵ではなく公開鍵を使用する場合は、[データ暗号化]を有効にします。
鍵共有の実行中にデータの解読にのみ公開鍵が使用される場合、[複号のみ]と[キー協定]を有効にします。
公開鍵をデジタル署名メカニズムと一緒に使用して、否認防止、鍵証明書署名、またはCRL署名以外のセキュリティ・サービスをサポートする場合、[デジタル証明]を有効にします。SSLクライアント証明書およびS/MIME署名証明書に有効です。
鍵共有の実行中にデータの暗号化にのみ公開鍵が使用される場合、[暗号化のみ]と[キー協定]を有効にします。
[キー協定]は、公開鍵が鍵共有に使用される場合有効にします。
公開鍵を証明書の署名の検証に使用するときは、[キー証明書署名]を有効にします。CA証明書では有効になります。
[キー暗号化]は、公開鍵が鍵転送に使用される場合有効にします。SSLサーバー証明書およびS/MIME暗号化証明書で有効になります。
[非拒絶]は、公開鍵がデジタル署名の検証に使用される場合に有効にします。S/MIME署名証明書およびオブジェクト署名証明書で有効になります。