証明書は所有者(対象名)を識別し、証明書の使用を制御する情報でラベル付けされた公開鍵です。
自己署名証明書とは、発行者名(署名者)と対象名(所有者)が同一の証明書です。
証明書が別の証明書の発行するために使用される場合、認証局の証明書になります。
これには、証明書を発行する役割をサポートする情報のエクステンション (CRLDistPoint、BasicConstraintsなど) も含まれています。
また、認証局のフラグを TRUE に設定したエクステンション BasicConstraints も含まれます。
ルートまたは最上位の認証局の証明書は自己署名されています。
証明書のサムプリントは証明書全体に計算されたハッシュです。
このサムプリントは証明書が表示されるたびに計算されます。証明書には含まれていません。
X.509標準では、どんな情報を証明書に含めることができるかが定義されており、その書き方(データ フォーマット)も説明されています。
すべてのX.509証明書には署名の他に以下のデータが含まれています。
バージョン | 証明書に X.509 標準のどのバージョンが適用されているかを特定します。 |
|---|---|
シリアルナンバー | 証明書を作成した実体は、実体が発行する他の証明書と区別するために、証明書にシリアルナンバーを割り当てる責任があります。 |
署名アルゴリズム識別子 | このアルゴリズムは、認証局が証明書に署名するときに使用されます。 |
発行者名 | 証明書に署名した実体の名称。 通常、CAになります。 |
有効期間 | それぞれの証明書は限られた期間内にのみ有効です。 |
対象名 | 証明書により識別された公開鍵の実体の名称。 例: CN=Road Runner, OU=Rocket Powered Systems, O=Acme Corportation, C=AU (上記は対象の共通名、組織単位、組織、国を表します。) |
対象の公開鍵 | 名前をつけられた実体の公開鍵と、その鍵が属する公開鍵暗号化システムのアルゴリズム識別子および関連キー パラメータ。 |
バージョン 1 は 1988 年より提供されており、広く配布され最も一般的です。
バージョン 2 では、対象名や発行者名を何度も再利用する可能性に対応するために、対象と発行者に対する一意の識別子の概念が導入されました。ほとんどの証明書のプロファイル文書では、名前を再利用しないことと、証明書が一意の識別子を使用しないことを強く推奨しています。バージョン 2 の証明書はそれほど広く使用されていません。
バージョン 3 は最も新しく (1996)、エクステンションの概念をサポートします。これにより、誰でもエクステンションを定義して証明書に組み込むことができます。
現在使用されている一般的なエクステンションには以下のようなものあります。
エクステンションは "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はドット表記の階層的な数字の列です。
0 | ITU-Tによる割り当て |
1 | ISOによる割り当て |
2 | ISO/ITU-Tによる共同割り当て |
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 のキー用途のエクステンションは、公開鍵の使用方法を制御します。
RFC 2459インターネットX.509PKI証明書とCRLのプロファイルには、いろいろなキー用途のエクステンション部分のビットの説明が記述されています。

CRL での署名の検証に公開鍵が使用される場合、[CRL 署名] を有効にします。CA 証明書の場合も有効になります。
ユーザー・データの暗号化に対称鍵ではなく公開鍵を使用する場合は、[データ暗号化] を有効にします。
鍵共有の実行中にデータの解読にのみ公開鍵が使用される場合、[復号のみ] と [キー協定] を有効にします。
公開鍵をデジタル署名メカニズムと一緒に使用して、否認防止、鍵証明書署名、またはCRL署名以外のセキュリティ・サービスをサポートする場合、[デジタル証明] を有効にします。SSLクライアント証明書およびS/MIME署名証明書に有効です。
鍵共有の実行中にデータの暗号化にのみ公開鍵が使用される場合、[暗号化のみ] と [キー協定] を有効にします。
[キー協定] は、公開鍵が鍵共有に使用される場合に有効にします。
公開鍵を証明書の署名の検証に使用するときは、[キー証明書署名] を有効にします。CA 証明書では有効になります。
[キー暗号化] は、公開鍵が鍵転送に使用される場合に有効にします。SSL サーバー証明書および S/MIME 暗号化証明書で有効になります。
[非拒絶] は、公開鍵がデジタル署名の検証に使用される場合に有効にします。S/MIME 署名証明書およびオブジェクト署名証明書で有効になります。