ネットワーク WG
Request for Comments: 3039
分類: スタンダードトラック
S. Santesson
AddTrust
W. Polk
NIST
P. Barzin
SECUDE
M. Nystrom
RSA Security
2001年1月

English

インターネットX.509公開鍵インフラストラクチャQCプロファイル
(Internet X.509 Public Key Infrastructure Qualified Certificates Profile)

このメモの位置づけ

このドキュメントは、 インターネット・コミュニティに対してインターネットスタンダードトラックのプロトコルを規定するとともに、 それを改良するための議論や提言を求めるものです。 このプロトコルの標準化状態およびステータスについては、 「Internet Official Protocol Standards」(STD 1)の最新版を参照してください。 このメモの配布に制限はありません。

著作権表記

Copyright (C) The Internet Society (2001). All Rights Reserved.

要旨

本書は、RFC 2459に基づくインターネット上の利用を目的とする公的に効果をもつ証明書の証明書プロファイルを規定します。 QCという言葉は、適用準拠法に従い、 一定のクオリファイド(資格のある)ステータスをもつ証明書のことを表します。 さらに、QCは、物理的な人間に対して個々に排他的に発行されます。

本書の目的は、 ローカルの法的要件に依存しない汎用的な構文を規定することです。 また一方、このプロファイルは固有のローカル要件にも対応できるように追加設定を可能にした設計をされています。

本プロファイルは、QCについて、 法的要件を一切定義していないことに注意することは重要です。

本書中のキーワード、"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", "OPTIONAL"は、 RFC 2119に記述されているように解釈されるべきものです。

目次

  1. 1. はじめに
  2. 2. 要件と仮定
    1. 2.1. 特性
    2. 2.2. 目的
    3. 2.3. ポリシー論点
    4. 2.4. 名前の独自性
  3. 3. 証明書と証明書拡張プロファイル
    1. 3.1. 証明書基本領域
      1. 3.1.1. 発行者
      2. 3.1.2. 主体者
    2. 3.2. 証明書拡張領域
      1. 3.2.1. 主体者ディレクトリー属性
      2. 3.2.2. 証明書ポリシー
      3. 3.2.3. 鍵用途
      4. 3.2.4. 生体情報生体情報
      5. 3.2.5. QC宣言
  4. 4. セキュリティに関する考慮事項
  5. 5. 参考文献
  6. 6. 知的財産権
  7. A. ASN.1定義
    1. A.1. 1988 ASN.1モジュール
    2. A.2. 1993 ASN.1モジュール
  8. B. 属性に関する注釈
  9. C. 証明書の実例
    1. C.1 ASN.1構造
      1. C.1.1 拡張領域
      2. C.1.2 証明書
    2. C.2 ASN.1ダンプ
    3. C.3 DERエンコーディング
    4. C.4 CAの公開RSA鍵
  10. 著者のアドレス
  11. 著作権表記全文

1. はじめに English

本仕様は、 インターネット上のX.509公開鍵インフラストラクチャ(PKI)標準の体系の一部です。 本仕様はRFC 2459に基づいています。 RFC2459は、 本標準の完全導入のために必要な基本となる証明書フォーマットと意味(semantics)を定義しています。

本標準は、QCと呼ばれるある特殊な証明書のフォーマットを規定します。 QCという用語と、 本書の規定範囲に影響する仮定については2章で論じられます。

3章は、QCの情報内容に対する要求事項を定義します。 本プロファイルは、 証明書基本領域2項目と証明書拡張領域5項目について規定します。 証明書基本領域は、主体者フィールドと発行者フィールドから成ります。 証明書拡張領域は、それぞれ主体者ディレクトリ属性、証明書ポリシー、 鍵用途、生体情報格納用独自拡張領域、 およびQC宣言格納用独自拡張領域です。 独自拡張領域について1993 Abstract Syntax Notation One (ASN.1)で定義されていますが、 付録Aの1988 ASN.1モジュールにはすべての標準的な定義が含まれており、 RFC 2459に準拠しています。 (付録Aの1993モジュールが参考になります。)

4章では、いくつかのセキュリティ考察について検討し、 QCの利用が想定された場合のセキュリティ背景を明確にします。 5章は、参考文献を記述しています。

付録Aは、 RFC 2459にまだ定義されていない関連のすべてのASN.1 [X.680] 構造を記述します。 付録Bは、属性について注釈します。 付録C は、証明書の実例を取り上げます。 付録D は、著者の連絡先を示しています。 また、付録EはIETF著作権表記です。

本仕様はQC特有の意味(semantics)についても、 適用すべきポリシーについても定義しないことに注意すべきです。 すなわち、本ドキュメントは、 QCに何の情報が入るべきなのかについて定義しますが、 情報そのものの意味については規定しません。 QCを使用するシステムは、 QCの中の情報に対して自分なりの意味(semantics)を定義しなければなりません。 法律や企業ポリシーによるこれらの定義が予想されます。

2. 要件と仮定 English

「QC (Qualified Certificate)」という用語は、 欧州委員会がヨーロッパ立法と特定の関連をもつある種の証明書のことを記述するために使用していたものです。 本仕様は、この種の証明書にも対応するように意識していますが、 適用範囲はこの用途に限ったものではありません。

「QC」という用語は、本標準において、より一般的な意味で使用されます。 つまり、公開否認防止サービスにおいて高度かつ確実な個人の身元確認を基本目的とする証明書のことを意味します。 法律的な観点から、 ある証明書が「QC」であるかどうかを判断する実質の機構(Mechanism)は、 本規格の規定範囲外です。

QCのフィールドにおけるハーモナイゼーション(調和、Harmonization)は、 RFC 2459規定範囲外のいくつかの側面において絶対不可欠です。 本仕様の規定範囲に影響を与える最も重要な側面は次のとおりです。:

2.1. 特性 English

本標準の中で定義されたQCは次の特性を持つことを仮定します。:

2.2. 目的 English

本プロファイルは、ある証明書をQCとする際に、 CAが明示的にその目的を証明書情報に包含させなければならないことを仮定します。

この情報の機能としては、 任意の関係エンティティがQCに基づいた署名を作成、また受付する際に、 それに伴うリスクの評価を支援することです。

このプロファイルは、 そのような情報を格納する2つの補足方法を定義します。:

2.3. ポリシー論点 English

ポリシーの一部は、 本プロファイルの理解および使用の背景について定義します。 一方、本プロファイルに準拠して証明書の発行や利用を行うサービスに対して、 適用すべきいかなるポリシーまたは法的側面を規定することは、 本プロファイルの規定範囲外です。

発行CAの運営は、公開利用可能な証明書ポリシーに準拠し、 その証明書ポリシーがCAの責任、 実施方法および手順と合致していることを仮定します。

2.4. 名前の一意性 English

識別名(Distinguished name)は、 もともとX.501 [X.501] のなかでディレクトリ名の表現として定義され、 すべてのオブジェクトの集合から特定のオブジェクトを識別するための仕組みとされます。 あるオブジェクトはディレクトリのエントリーとして表わされなくても、 識別名を割り当てられることができます。 逆に、ディレクトリ中で出現していれば、 オブジェクト・エントリーとしての名前がそのまま識別名となります。 QCとの関連において、識別名は実際、 あるいは仮想のDIT (Directory Information Tree) [X.501] のいずれかを形成したある特定のドメイン内に明瞭な名前を形成する属性値 [X.501] の集合を意味します。 主体者名の場合では、このドメインは少なくとも、 CAの発行ドメインであることが想定されます。 識別名は、発行者名フィールドで示されたCAの有効期間内に、 同じく当該CAに認定を受けた主体者エンティティ別に一意でなければなりません(MUST)

3. 証明書と証明書拡張プロファイル English

この章は、QCのプロファイルを定義します。 本プロファイルは、 X.509バージョン3のフォーマットをベースにしたインターネット証明書プロファイルRFC 2459に基づきます。 この章を完全に実装するには、 実施者がRFC 2459に定義されている基本フォーマットおよび意味(semantics)を参考にすることを要求されます(REQUIRED)

この章に関係して、 RFC 2459に規定されていないASN.1定義については、 付録Aの中で記述されます。

3.1. 証明書基本領域 English

本仕様は、 証明書の2つの基本領域の内容についてさらに詳細にわたって説明を行います。 それぞれ発行者フィールドと主体者フィールドとなります。

3.1.1. 発行者 English

発行者フィールドは、 当該証明書を発行する責任機関を識別するものとします(SHALL)。 その名称は公的に登録された名前であることが必要です(SHOULD)

発行者の身元は、 下記の属性からなる適切なサブセットを用いて指定するものとします(SHALL)。:

domainComponent;
countryName;
stateOrProvinceName;
organizationName;
localityName; and
serialNumber.

他の属性を追加する可能性がありますが(MAY)、 発行機関の識別にそれらの属性を必須項目にするべきではありません(SHOULD NOT)

発行者フィールドの中にある属性は、 発行者が運用上準拠する法律と一致する必要があります(SHOULD)

名前フィールドの意味や発行者の運営準拠法を判断するためには、 証明書所有者(relying party)は、 関連する証明書ポリシーと(または)発行者のCPSを参考にすることができます。(MAY)

3.1.2. 主体者 English

本プロファイルに準拠する証明書の主体者フィールドは、 主体者の識別名(識別名の定義に関しては2.4節を参照)を含んでいるものとします(SHALL)

主体者フィールドは、 次の属性からなる適切なサブセットを包含するものとします(SHALL)。:

countryName;
commonName;
surname;
givenName;
pseudonym;
serialNumber;
organizationName;
organizationalUnitName;
stateOrProvinceName
localityName and
postalAddress.

他の属性が存在することもありますが、 発行者ドメイン内でほかの主体者名から該当主体者名を識別するのに必須項目にしてはいけません(MUST NOT)

これらの属性について、 主体者フィールドには少なくとも下記のうち1つを含んでいるものとします(SHALL)。:

選択肢 1: commonName
選択肢 2: givenName
選択肢 3: pseudonym

countryName属性の値は、 それ以外の属性を理解するための一般背景を規定します。 国属性(country attribute)は、 必ずしも主体者の国籍の国あるいは居住している国を表す必要がありません。 また、それを発行した国を示すわけでもありません。

注:多くのX.500実装は、DITの中にcountryNameの存在を要求します。 主体者フィールドに指定された主体者名が公開X.500ディレクトリのあるエントリーを指している場合、 countryName属性は常に存在していることが必要です(SHOULD)

commonName属性値が存在する場合、 主体者の名前を含むものとします(SHALL)。 形式としては、主体者の希望提示フォーマットでも、 CAの好ましいフォーマットでも、 あるいはその他のフォーマットであってもかまいません(MAY)。 偽名やニックネームなどの、 公認されている名前の綴り以外の名前を使用することもできます(MAY)。 commonNameの中で示されている名前の性質を理解するために、 適用アプリケーションは、givenName属性とsurname属性の現在値、 あるいは偽名属性の現在値を考察しなければならない可能性があります(MAY)

注:多くのクライアントの実装では、 主体者フィールドにcommonName属性値の存在を前提にし、givenName、 surnameあるいはpseudonym(偽名)属性の現在値にかかわらず、 その値を使って主体者の名前を表示します。

surnameおよびgivenName属性型が存在していれば、 証明書作成時にCAが準拠する法律に従った主体者の公認名称を含むこととします(SHALL)。 commonName属性が存在しない場合、 これらの属性は主体者フィールドの中で使用されることとします(SHALL)。 主体者が単一の名前しか登録されなかったときに、 givenName属性を使用し(SHALL)、 surnameは省略することとします(SHALL)

pseudonym属性型が存在する場合、 主体者の偽名を含むこととします(SHALL)。 pseudonym属性は、 surnameおよび(または)givenName属性のいずれかと組み合わせて使用してはいけません(MUST NOT)

serialNumber属性型が存在する場合、 主体者フィールドの名前が同一になりかねないところで、 区別するために使用されることとします(SHALL)。 この属性は、 主体者名の独自性を保証する目的以外は特に定義された意味はありません。 CAが割り振る数字やコードであったり、 あるいは政府か行政機関による識別子である可能性があります(MAY)。 任意の主体者名間の衝突を解決するのにserialNumberが十分であることを保証するのはCAの責任です。

organizationNameおよびorganizationalUnitNameの属性型が存在する場合、 主体者が関連している組織の名前および適切な情報を格納するために使用されることとします(SHALL)。 組織と主体者の間を関連付けるタイプについては、 このドキュメントの規定範囲外です。

postalAddress、stateOrProvinceNameおよびlocalityName属性型は、 もし存在する場合、 主体者が関連している住所及び地理的な情報を格納するために使用されることとします(SHALL)。 もし同時にorganizationName値も存在するならば、postalAddress、 stateOrProvinceNameおよびlocalityNameの値はその特定の機関に関係することとします(SHALL)。 postalAddress、stateOrProvinceName、localityName、 と主体者またはorganizationNameのいずれとの間の関連は、 このドキュメントの規定範囲外です。

準拠した実装は、 この節で命名された属性を解釈することができることとします(SHALL)

3.2. 証明書拡張領域 English

本仕様は、 証明書の5つの拡張領域の内容についてさらに詳細説明を行います。 具体的には、主体者ディレクトリ属性、証明書ポリシー、鍵用途、 生体情報用独自拡張、およびQC宣言用独自拡張です。

3.2.1. 主体者ディレクトリ属性 English

subjectDirectoryAttributes拡張領域は、 主体者フィールドおよび主体者別名拡張にある既存情報の補足として、 主体者に関連しているほかの追加属性を含めることができます(MAY)

主体者の識別名の一部ではなく、 他の目的(例えば認可)にまだ役立つかもしれない属性は、 この拡張領域に格納するのに適しています。

この拡張領域は重要(critical)に設定してはなりません(MUST NOT)

準拠した実装は、 下記の属性を解釈することができることとします(SHALL)。:

title
dateOfBirth
placeOfBirth
gender
countryOfCitizenship
countryOfResidence

その他の属性もローカルの定義に従って含めることができます(MAY)

職位属性型が存在する場合、 主体者フィールドの組織属性の既存設定によって規定された組織内に主体者の指定職位、 または職務を格納するために使用されることとします(SHALL)。 職位、主体者および組織の間の関連は、このドキュメントの規定範囲外です。

dateOfBirth属性が存在する場合、 主体者の誕生日の値を設定することとします(SHALL)。 誕生日と主体者間の結び付けの様式は、このドキュメントの規定範囲外です。

placeOfBirth属性が存在する場合、 主体者の出生地の値を設定することとします(SHALL)。 出生地と主体者間の結び付けの様式は、このドキュメントの規定範囲外です。

gender属性が存在する場合、 主体者の性別の値を設定することとします(SHALL)。 女性に「F」値(あるいは「f」値)、 男性に「M」値(あるいは「m」値)を使用しなければなりません。 性別と主体者の結び付けの様式はこのドキュメントの規定範囲外です。

countryOfCitizenship属性が存在する場合、 証明書発行時に主体者が主張する国籍の識別子を少なくとも1つ以上を設定することとします(SHALL)。 主体者が1カ国以上の市民権をもっている場合、 1カ国以上の名前を設定することができます(MAY)。 市民権の決定は法律の問題であり、このドキュメントの規定範囲外となります。

countryOfResidence属性が存在する場合、 主体者が居住している国の値を少なくとも1ヶ国以上を含めることとします(SHALL)。 主体者が1ヶ国以上に居住していれば、 1ヶ国を設定することもできます(MAY)。 居住地の決定は法律の問題であり、このドキュメントの規定範囲外です。

3.2.2. 証明書ポリシー English

証明書ポリシー拡張領域は、 CAの実施方法および手順を反映する証明書ポリシーの識別子を少なくとも一つ以上含むこととします(SHALL)。 証明書ポリシー拡張領域は重要と指定することができます(MAY)

2.2節で論議されたように、 証明書の目的を表明する発行者の提示情報は指示のポリシーを通して、 明白であることになります(SHOULD)。

証明書ポリシー拡張領域は、 証明書有効性検証に必要とされるすべてのポリシー情報を包括する必要があります(SHOULD)。 もしポリシー情報がQCStatements拡張領域(3.2.5節を参照)に含まれている場合、 この情報も指示されたポリシーに定義される必要があります(SHOULD)

証明書ポリシーは、 RFC 2459に定義されている任意の修飾子(qualifier)と組み合わせることもできます(MAY)

3.2.3. 鍵用途 English

鍵用途拡張領域は、存在することとします(SHALL)。 もし鍵用途のnonRepudiationビットが立てている場合、 その他の鍵用途と組み合わせて使用してはいけません(SHOULD NOT)。 すなわち、 鍵用途のnonRepudiationを設定する場合は、排他的に設定する必要があります。

鍵用途拡張領域は重要に指定することができます(MAY)

3.2.4. 生体情報 English

この節は、生体情報を格納する拡張を定義します。 バイオメトリクスの情報は、バイオメトリクスのハッシュ値の形で格納されます。

この拡張の目的は生体情報による認証方法を提供することです。 格納されたハッシュ値に対応する生体情報そのものは拡張に格納されませんが、 拡張にその情報が取得可能な場所を指し示す URIを含めることができます(MAY)。 URIが含まれていても、 該当の情報にアクセスする唯一の方法を意味するものではありません。

この拡張にある生体情報は、 人間による検証に適した情報形式に限定することが推奨されます(RECOMMENDED)。 すなわち、当該情報が主体者を正確に代表しているかどうか、 人間が自然に判断できることです。 これは、生体情報のひとつの使い方を暗喩しています。 例えば、証明書所有者(relying party)に画像イメージを表示し、 主体者を識別する手段を強化するために利用することができます。

この拡張は必須に設定してはいけません。(MUST NOT)。

biometricInfo EXTENSION ::= {
    SYNTAX BiometricSyntax
    IDENTIFIED BY id-pe-biometricInfo }

id-pe-biometricInfo OBJECT IDENTIFIER ::= {id-pe 2}

BiometricSyntax ::= SEQUENCE OF BiometricData

BiometricData ::= SEQUENCE {
    typeOfBiometricData TypeOfBiometricData,
    hashAlgorithm AlgorithmIdentifier,
    biometricDataHash OCTET STRING,
    sourceDataUri IA5String OPTIONAL }

TypeOfBiometricData ::= CHOICE {
    predefinedBiometricType PredefinedBiometricType,
    biometricDataID OBJECT IDENTIFIER }

PredefinedBiometricType ::= INTEGER { picture(0),
    handwritten-signature(1)} (picture|handwritten-signature,...)
    

事前定義済みの生体型の画像が存在する場合は、 元となる画像が主体者の表示可能なグラフィカルイメージ形式をしていることを確認することとします(SHALL)。 グラフィカルイメージのハッシュは、 イメージタイプを定義するすべてのラベルを除いて、 イメージデータのみを元に計算されるものとします(SHALL)

事前定義済みの生体型の手書き署名が存在する場合は、 元となるデータが主体者の手書き署名の表示可能なグラフィカルイメージ形式をしていることを確認することとします(SHALL)。 グラフィカルイメージのハッシュは、 イメージタイプを定義する任意のラベルを除いて、 イメージデータのみをもとに計算されることとします(SHALL)

3.2.5. QC宣言 English

この節は、QC と関係する定義済み宣言を格納するための拡張を定義します。

ある特定の法制度(2.2節で論議された)に従い、 証明書をQCとして発行するという発行者の宣言は、 この拡張に格納できる(MAY)典型的な宣言です。

この拡張領域への格納に適合するほかの宣言は、 証明書発行時に適用された法的管轄区域と関係する宣言が挙げることができます(MAY)。 例えば、CAの責任制約を示す証明書の最大の信頼限界が一例です(MAY)。

各宣言には宣言のオブジェクト識別子を含めることとし(SHALL)、 そしてstatementInfoパラメータのなかにあるオプションとしての適格データ (qualifying data)も含めることができます(MAY)

statementInfoパラメータが含まれている場合、 宣言のオブジェクト識別子は、 その構文およびパラメータの意味を定義する必要があります(SHOULD)。 オブジェクト識別子が意味を定義しない場合は、 証明書所有者(relying party)が適切な証明書ポリシーあるいはCPSを参考しなければならない可能性があります。

この拡張は、 重要(critical)または非重要(non-critical)に設定することができます。 この拡張が重要な場合、 この拡張に含まれている宣言がすべて重要であると見なされることを意味します。

qcStatements EXTENSION ::= {
    SYNTAX QCStatements
    IDENTIFIED BY id-pe-qcStatements }

id-pe-qcStatements OBJECT IDENTIFIER ::= { id-pe 3 }

QCStatements ::= SEQUENCE OF QCStatement

QCStatement ::= SEQUENCE {
    statementId QC-STATEMENT.&Id({SupportedStatements}),
    statementInfo QC-STATEMENT.&Type
    ({SupportedStatements}{@statementId}) OPTIONAL }

SupportedStatements QC-STATEMENT ::= { qcStatement-1,...}
    
3.2.5.1 事前定義済み宣言 English

このプロファイルは、 あらかじめ定義されたオブジェクト識別子(id-qcspkixQCSyntax-v1)を1つ持っています。 当該識別子は、 プロファイルの中で定義された構文および意味との整合性を判別するために利用されます。 このQCプロファイルはバージョン1と呼ばれます。

qcStatement-1 QC-STATEMENT ::= {
    SYNTAX SemanticsInformation IDENTIFIED BY id-qcs-pkixQCSyntax-v1 }

-- この宣言は、QC プロファイル(バージョン1)
-- に定義された構文と意味との整合性について特定します。
-- SemanticsInformationにはオプションとして付加的な意味情報を格納することも可能です。

SemanticsInformation ::= SEQUENCE {
    semanticsIdentifier OBJECT IDENTIFIER OPTIONAL,
    nameRegistrationAuthorities NameRegistrationAuthorities OPTIONAL }

(WITH COMPONENTS {..., semanticsIdentifier PRESENT}|

WITH COMPONENTS {..., nameRegistrationAuthorities PRESENT})

NameRegistrationAuthorities ::= SEQUENCE SIZE (1..MAX) OF GeneralName
    

id-qcspkixQCSyntaxv1で識別されるSementicsInformationコンポーネントは、 1つの意味識別子を格納することができ(MAY)、 1つあるいはそれ以上の名前登録機関を識別することができます(MAY)

semanticsIdentifierコンポーネントが存在する場合、 OIDを格納することとし(SHALL)、 証明書基本領域および証明書拡張領域にある属性や名前の意味を定義します。 OIDは、すべて既存属性および(または)名前の意味、 あるいはその一部集合(subgroup)の意味を定義することができます。

NameRegistrationAuthoritiesコンポーネントが存在する場合、 主体者関連の属性または名前の登録を行う名前登録機関の名前を1つまた1つ以上含むこととします(SHALL)。 識別された名前登録機関と既存属性との関連は意味識別OID、 証明書ポリシー(またはCPS)あるいは他のいくつかの暗示的な要因によって、 定義されることができます(MAY)

もしQCStatementの中にSemanticsInformation型の値があれば、 例示のように少なくともsemanticsIdentifierフィールドとnameRegistrationAuthoritiesフィールドのいずれか1つが存在するに違いありません。

4. セキュリティに関する考慮事項 English

QCを用いて有効性が検証されたディジタル署名の法的な価値は、 関連する秘密鍵の使用を管理するポリシーに大きく依存します。 秘密鍵の所持者も証明書利用者(relying party)も正規の鍵所持者の同意を前提として秘密鍵が使用されていることを確かめるべきです。

公開鍵は、関係者間に法的な意味合いで公共的に使用されるため、 CAがQCとして証明書を発行する前に、一定の条件を設けるべきです。 関連する秘密鍵は、主体者別に一意である必要があり、 主体者の単独の管理下で保持されなければなりません。 すなわち、秘密鍵の使用が意図しない使用法から保護されない場合は、 CAはQCを発行しないほうがよいでしょう。 これは、 CAが主体者の暗号モジュールについてある程度の知識を持っていることを意味します。

CAは、 さらに証明書に含まれている公開鍵が主体者を合法的に代表していることを検証しなければなりません。

上記のこれらの条件が満たされるまで、 CAは別のCAのポリシーの受付を意味するポリシーマッピング・拡張を備えたCA証明書を発行しないほうがよいでしょう。

keyUsage証明書拡張にあるnonRepudiationビットを他のkeyUsageビットと組み合わせることは、 セキュリティに影響を与えかねません。 そこで、この仕様においてこのような運用をしないことをお薦めします。

2枚のQCを比較し、 同じ物理的エンティティを指しているのかを判別する能力は、 主体者の名前の意味に依存します。 ある特定の属性の意味は発行者の相違によって異なるかもしれません。 これら特定の証明書内の名前の意味を考慮せず、 名前のみを比較することは、 誤解を招きやすい結果をもたらすことになるかもしれません。

本仕様はRFC 2459のプロファイルです。 RFC 2459のセキュリティに関する考慮事項の章は、 この仕様にも同様に適用します。

5. 参考文献 English

[RFC 2119] Bradner, S.,
「RFCにおいて要請の程度を示すために用いるキーワード(Key words for use in RFCs to Indicate Requirement Levels)」,
BCP 14, RFC 2119, 1997年3月.
[RFC 2247] Kille, S., Wahl, M., Grimstad, A., Huber, R. and S. Sataluri,
"Using Domains in LDAP/X.500 Distinguished Names",
RFC 2247, 1998年1月.
[RFC 2459] Housley, R., Ford, W., Polk, W. and D. Solo,
「インターネットX.509公開鍵インフラストラクチャ(Internet X.509 Public Key Infrastructure: Certificate and CRL Profile)」,
RFC 2459, 1999年1月.
[RFC 2985] Nystrom, M. and B. Kaliski,
"PKCS #9: Selected Object Classes and Attribute Types Version 2.0",
RFC 2985, 2000年11月.
[X.501] ITU-T Recommendation X.501: Information Technology - Open Systems Interconnection - The Directory: Models, 1993年6月.
[X.509] ITU-T Recommendation X.509: Information Technology - Open Systems Interconnection - The Directory: Authentication Framework, 1997年6月.
[X.520] ITU-T Recommendation X.520: Information Technology - Open Systems Interconnection - The Directory: Selected Attribute Types, 1993年6月.
[X.680] ITU-T Recommendation X.680: Information Technology - Abstract Syntax Notation One, 1997年.
[ISO 3166] ISO Standard 3166: Codes for the representation of names of countries, 1993年.

6. 知的財産権 English

IETFは、すべての知的財産、 本ドキュメントに記述された技術の実装や使用時に主張されうる関連の権利、 そしてそのような権利に基づいたライセンスの適用可能な範囲の有効性や対象範囲について、 いかなる立場も取りません。; またそのような権利を判別するためのいかなる努力を行なったことも表明しません。 スタンダードトラックおよび標準関連ドキュメンテーションの権利に関するIETFの手続き情報はBCP-11から参照することができます。 権利主張公表用の声明文およびライセンス提供の保証書の複製(コピー)、 あるいは本仕様書の実装者かユーザによる一般ライセンスまたは所有権に関する使用許諾の申請結果などはIETF事務局から取得することができます。

IETFは、 すべての関係者にこの標準を運用する際にカバーする技術についての著作権、 特許あるいは特許出願、およびその他の財産権利に注意を払うことを勧告します。 IETFの事務局長にそのような情報を報告してください。


A. ASN.1定義 English

RFC 2459の場合と同様に、 ASN.1モジュールは、ASN.1構文の異なる2つの変形で提供されます。

付録A.1は1988構文に記述されており、 マクロを使用しません。 しかし、当該モジュールの型定義のインポート元であるRFC 2459モジュールがすべて1988構文に含まれるとは限らないため、 RFC 2459にある使用法と同じ解説(注釈)はここにも適用しています。 つまり、付録A.1は、 RFC 2459の1988モジュール中のUNIVERSAL型の定義およびそれに対する参照を削除することにより1988年ASN.1パーザによって構文解析されることができます。

付録A.2は1993年構文の中に記載されています。 しかしながら、 当該モジュールの型定義のインポート元であるRFC 2459モジュールがすべて1993構文に含まれるとは限らないため、 RFC 2459にある使用法と同じ解説(注釈)はここにも適用できます。 つまり、付録A.2は、 RFC 2459のモジュールPKIX1Explicit93のDirectoryString定義からUTF8String選択肢を削除することにより、 1993 ASN.1パーザによって解析されることができます。 付録A.2は"そのまま"(as is)で1997 ASN.1のパーザによって解析されることもできます。

これらのモジュールの間に相違があった場合には、 1988モジュールが標準のモジュールとなります。

A.1. 1988 ASN.1モジュール English

PKIXqualified88 {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-qualified-cert-88(10) }

DEFINITIONS EXPLICIT TAGS ::=

BEGIN

-- すべてをエクスポートします。

IMPORTS

GeneralName

    FROM PKIX1Implicit88 {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit-88(2)}

AlgorithmIdentifier, DirectoryString, Attribute, AttributeType, id-pkix, id-pe, id-at

    FROM PKIX1Explicit88 {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-explicit-88(1)};

-- 独自定義のOID

-- QC個人情報属性の Arc
id-pda OBJECT IDENTIFIER ::= { id-pkix 9 }
-- QC宣言のArc
id-qcs OBJECT IDENTIFIER ::= { id-pkix 11 }

-- 属性

id-at-serialNumber AttributeType ::= { id-at 5 }
SerialNumber ::= PrintableString (SIZE(1..64))

id-at-postalAddress AttributeType ::= { id-at 16 }
PostalAddress ::= SEQUENCE SIZE (1..6) OF DirectoryString

id-at-pseudonym AttributeType ::= { id-at 65 }
Pseudonym ::= DirectoryString

domainComponent AttributeType ::= { 0 9 2342 19200300 100 1 25 }
DomainComponent ::= IA5String

id-pda-dateOfBirth AttributeType ::= { id-pda 1 }
DateOfBirth ::= GeneralizedTime

id-pda-placeOfBirth AttributeType ::= { id-pda 2 }
PlaceOfBirth ::= DirectoryString

id-pda-gender AttributeType ::= { id-pda 3 }
Gender ::= PrintableString (SIZE(1))
-- "M", "F", "m" or "f"

id-pda-countryOfCitizenship AttributeType ::= { id-pda 4 }
CountryOfCitizenship ::= PrintableString (SIZE (2))
-- ISO 3166 Country Code

id-pda-countryOfResidence AttributeType ::= { id-pda 5 }
CountryOfResidence ::= PrintableString (SIZE (2))
-- ISO 3166 Country Code

-- 独自拡張

-- 生体情報拡張

id-pe-biometricInfo OBJECT IDENTIFIER ::= {id-pe 2}
BiometricSyntax ::= SEQUENCE OF BiometricData

BiometricData ::= SEQUENCE {

    typeOfBiometricData TypeOfBiometricData,
    hashAlgorithm AlgorithmIdentifier,
    biometricDataHash OCTET STRING,
    sourceDataUri IA5String OPTIONAL }

TypeOfBiometricData ::= CHOICE {

    predefinedBiometricType PredefinedBiometricType,
    biometricDataOid OBJECT IDENTIFIER }

PredefinedBiometricType ::= INTEGER {

    picture(0),handwritten-signature(1)}

(picture|handwritten-signature)

-- QC 宣言拡張

id-pe-qcStatements OBJECT IDENTIFIER ::= { id-pe 3}

QCStatements ::= SEQUENCE OF QCStatement

QCStatement ::= SEQUENCE {

    statementId OBJECT IDENTIFIER,
    statementInfo ANY DEFINED BY statementId OPTIONAL}

-- QC宣言

id-qcs-pkixQCSyntax-v1 OBJECT IDENTIFIER ::= { id-qcs 1 }

-- この宣言はQC プロファイル(バージョン1)

-- に定義された構文と意味との整合性について特定します(?)。

-- この宣言はオプションとして以下の付加的な意味情報を格納することも可能です。

SemanticsInformation ::= SEQUENCE {

    semanticsIndentifier OBJECT IDENTIFIER OPTIONAL,
    nameRegistrationAuthorities NameRegistrationAuthorities OPTIONAL

} -- At least one field shall be present

NameRegistrationAuthorities ::= SEQUENCE SIZE (1..MAX) OF GeneralName

END
    

A.2. 1993 ASN.1モジュール English

PKIXqualified93 {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-qualified-cert-93(11) }

DEFINITIONS EXPLICIT TAGS ::=

BEGIN

-- すべてをエクスポートします。

IMPORTS
authorityKeyIdentifier, subjectKeyIdentifier, keyUsage, extendedKeyUsage, privateKeyUsagePeriod, certificatePolicies, policyMappings, subjectAltName, issuerAltName,basicConstraints, nameConstraints, policyConstraints, cRLDistributionPoints, subjectDirectoryAttributes, authorityInfoAccess, GeneralName,

OTHER-NAME
FROM PKIX1Implicit93 {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit-93(4)}

id-pkix, AlgorithmIdentifier, ATTRIBUTE, Extension, EXTENSION, DirectoryString{}, ub-name, id-pe, id-at, id-at-commonName, id-at-surname, id-at-countryName, id-at-localityName, id-at-stateOrProvinceName, id-at-organizationName, id-at-organizationalUnitName, id-at-givenName, id-at-dnQualifier, pkcs9email, title, organizationName, organizationalUnitName, stateOrProvinceName, localityName, countryName, generationQualifier, dnQualifier, initials, givenName, surname, commonName, name
FROM PKIX1Explicit93 {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-explicit-93(3)};

--オブジェクト識別子

-- 外部的に定義されたOID

id-at-serialNumber OBJECT IDENTIFIER ::= { id-at 5}
id-at-postalAddress OBJECT IDENTIFIER ::= { id-at 16 }
id-at-pseudonym OBJECT IDENTIFIER ::= { id-at 65 }
id-domainComponent OBJECT IDENTIFIER ::= { 0 9 2342 19200300 100 1 25 }

-- 独自に定義された OID

-- QC 個人情報属性の Arc

id-pda OBJECT IDENTIFIER ::= { id-pkix 9 }
-- Arc for QC statements
id-qcs OBJECT IDENTIFIER ::= { id-pkix 11 }

-- 独自拡張
id-pe-biometricInfo OBJECT IDENTIFIER ::= { id-pe 2 }
id-pe-qcStatements OBJECT IDENTIFIER ::= { id-pe 3 }

-- 個人情報属性
id-pda-dateOfBirth OBJECT IDENTIFIER ::= { id-pda 1 }
id-pda-placeOfBirth OBJECT IDENTIFIER ::= { id-pda 2 }
id-pda-gender OBJECT IDENTIFIER ::= { id-pda 3 }
id-pda-countryOfCitizenship OBJECT IDENTIFIER ::= { id-pda 4 }
id-pda-countryOfResidence OBJECT IDENTIFIER ::= { id-pda 5 }

-- QC宣言

id-qcs-pkixQCSyntax-v1 OBJECT IDENTIFIER ::= { id-qcs 1 }

-- オブジェクトセット

--次の情報オブジェクトセットは法的証明書拡張領域のセットを制約するものです。このセットはRFC2459に定義されたExtensionSetの拡張のひとつ

--であることに注意してください。

ExtensionSet EXTENSION ::= {

    authorityKeyIdentifier |
    subjectKeyIdentifier |
    keyUsage |
    extendedKeyUsage |
    privateKeyUsagePeriod |
    certificatePolicies |
    policyMappings |
    subjectAltName |
    issuerAltName |
    basicConstraints |
    nameConstraints |
    policyConstraints |
    cRLDistributionPoints |
    subjectDirectoryAttributes |
    authorityInfoAccess |
    biometricInfo |
    qcStatements, ... }

-- 次の情報オブジェクトセットは識別名においてアプリケーション側の認識が必要とされる属性セットを制約するために定義されたものです。
-- このセットはいうまでもなくローカルの要件に合致するように拡張することができます。
-- セットの一部を削除することによって、実装の適合性に影響し、相 互接続性に支障を来たしかねないことに注意してください。
-- また、このセットは RFC2459 の SupportedAttributes セットの拡張領域の 1つです。

SupportedAttributes ATTRIBUTE ::= {

    countryName | commonName | surname | givenName | pseudonym |
    serialNumber | organizationName | organizationalUnitName |
    stateOrProvinceName | localityName | postalAddress |
    pkcs9email | domainComponent | dnQualifier,
    ... -- For future extensions -- }

-- 次の情報オブジェクトセットは subjectDirectoryAttribute 拡張においてアプリケーション側の認識を必要とされる属性セットを制約するために定義されたものです。
-- このセットはローカルな要件に合致するよう拡張することも可能です。
-- セットの一部を削除することは実装の適合性に影響を与え、相互接続性に支障を来たす恐れがあることに注意してください。

PersonalDataAttributeSet ATTRIBUTE ::= {

    title | dateOfBirth | placeOfBirth | gender | countryOfCitizenship | countryOfResidence, ... }

-- 属性

-- X.520によるserialNumber

serialNumber ATTRIBUTE ::= {

    WITH SYNTAX PrintableString (SIZE(1..64))
    ID id-at-serialNumber }

-- X.520によるpostalAddress

postalAddress ATTRIBUTE ::= {

    WITH SYNTAX SEQUENCE SIZE (1..6) OF DirectoryString { 30 }
    ID id-at-postalAddress }

-- (今度の)X.520によるpseudonym

pseudonym ATTRIBUTE ::= {

    WITH SYNTAX DirectoryString { ub-name }
    ID id-at-pseudonym }

-- RFC2247による domainComponent

domainComponent ATTRIBUTE ::= {

    WITH SYNTAX IA5String
    ID id-domainComponent }

dateOfBirth ATTRIBUTE ::= {

    WITH SYNTAX GeneralizedTime
    ID id-pda-dateOfBirth }

placeOfBirth ATTRIBUTE ::= {

    WITH SYNTAX DirectoryString { ub-name }
    ID id-pda-placeOfBirth }

gender ATTRIBUTE ::= {

    WITH SYNTAX PrintableString (SIZE(1) ^ FROM("M"|"F"|"m"|"f"))
    ID id-pda-gender }

countryOfCitizenship ATTRIBUTE ::= {

    WITH SYNTAX PrintableString (SIZE (2))
    (CONSTRAINED BY { -- ISO 3166 codes only -- })
    ID id-pda-countryOfCitizenship }

countryOfResidence ATTRIBUTE ::= {

    WITH SYNTAX PrintableString (SIZE (2))
    (CONSTRAINED BY { -- ISO 3166 codes only -- })
    ID id-pda-countryOfResidence }

-- 独自拡張

-- 生体情報拡張

biometricInfo EXTENSION ::= {

    SYNTAX BiometricSyntax
    IDENTIFIED BY id-pe-biometricInfo }

BiometricSyntax ::= SEQUENCE OF BiometricData

BiometricData ::= SEQUENCE {

    typeOfBiometricData TypeOfBiometricData,
    hashAlgorithm AlgorithmIdentifier,
    biometricDataHash OCTET STRING,
    sourceDataUri IA5String OPTIONAL,
    ... -- For future extensions -- }

TypeOfBiometricData ::= CHOICE {

    predefinedBiometricType PredefinedBiometricType,

    biometricDataOid OBJECT IDENTIFIER }

PredefinedBiometricType ::= INTEGER { picture(0),

    handwritten-signature(1)} (picture|handwritten-signature,...)

-- QC宣言拡張

qcStatements EXTENSION ::= {

    SYNTAX QCStatements
    IDENTIFIED BY id-pe-qcStatements }

QCStatements ::= SEQUENCE OF QCStatement

QCStatement ::= SEQUENCE {

    statementId QC-STATEMENT.&id({SupportedStatements}),
    statementInfo QC-STATEMENT.&Type
    ({SupportedStatements}{@statementId}) OPTIONAL }

QC-STATEMENT ::= CLASS {

    &id OBJECT IDENTIFIER UNIQUE,
    &Type OPTIONAL }

WITH SYNTAX {

    [SYNTAX &Type] IDENTIFIED BY &id }

qcStatement-1 QC-STATEMENT ::= { SYNTAX SemanticsInformation

    IDENTIFIED BY id-qcs-pkixQCSyntax-v1}

--この宣言は QC プロファイル(バージョン1)に定義された構文と意味との整合性について特定します。
-- SemanticsInformationには指定のほかの意味情報をオプション的に格納することも可能です。

SemanticsInformation ::= SEQUENCE {

    semanticsIdentifier OBJECT IDENTIFIER OPTIONAL,
    nameRegistrationAuthorities NameRegistrationAuthorities OPTIONAL

}(WITH COMPONENTS {..., semanticsIdentifier PRESENT}|

WITH COMPONENTS {..., nameRegistrationAuthorities PRESENT})

NameRegistrationAuthorities ::= SEQUENCE SIZE (1..MAX) OF GeneralName

--次の情報オブジェクトセットはQCSとしてアプリケーションによる認識が必要とされる属性セットを制約するために定義されます。

SupportedStatements QC-STATEMENT ::= {

    qcStatement-1, ... -- For future extensions -- }

END
    

B. 属性(Attribute)に関する注釈 English

このドキュメントでは、いくつかの新しい属性を定義し、 発行された証明書の主体者フィールドおよびsubjectDirectoryAttributes拡張領域で使用されます。 整合性を考慮し、それらの属性は、 RFC 2459のASN.1 ATTRIBUTE定義を使って定義されています。 そのような定義は本ドキュメントにとっては十分ですが、 ISO/ITUの定義と比較するとしたら非常に単純化されています。 これらの新しい属性(対応する規則を含む)の完全な定義、 およびLDAP対応のディレクトリーの中で新しい属性をサポートするオブジェクト・クラスは、 [PKCS 9] の中から見つけることができます。


C. 証明書の実例 English

この章はASN.1構造、ASN.1ダンプ、およびこのプロファイルに準拠し、 発行された証明書のDERエンコーディングについて記述します。 本例は、OSS ASN.1コンパイラによって作成されています。 証明書は次の特性を持っています。:

  1. 証明書は、RSAおよびSHA-1ハッシュアルゴリズムによって署名されます。
  2. 発行者の識別名は、O=GMD - Forschungszentrum Informationstechnik GmbH; C=DEです。
  3. 主体者の識別名は、CN=Petra M. Barzin, O=GMD - Forschungszentrum Informationstechnik GmbH, C=DEです。
  4. 証明書は、2000年5月1日に発行され、2000年11月1日に満期になります。
  5. 証明書は、1024ビットRSA鍵を含んでいます。
  6. 証明書に否認防止に専用の鍵用途拡張が必須となっています。
  7. 証明書には、発行CA (object identifier 1.3.36.8.1.1)の実施方法および手順を記述する証明書ポリシー識別子拡張が含まれています。ここで証明書ポリシーオブジェクト識別子はドイツのTeleTrustによって定義されました。ドイツのディジタル署名法に準拠した設定が要求されています。
  8. 証明書は、次の属性を格納した主体者ディレクトリー属性拡張を含んでいます。:
    surname: Barzin
    given name: Petra
    date of birth: October, 14th 1971
    place of birth: Darmstadt
    country of citizenship: Germany
    gender: Female
  9. 証明書にクオリファイド・ステートメント・プライベート拡張を含んでおり、命名登録機関の名前が「municipality@darmstadt.de」であることを示しています。
  10. RFC 2459に基づき、証明書には機関鍵識別子拡張が含まれています。

C.1 ASN.1構造 English

C.1.1 拡張領域 English

拡張領域がこの構造に組み込まれて署名される前に、 既にDERエンコード化されていますが、 ここに [X.680] に定義された値の表記法で記述するのは分かりやすくするためです。

C.1.1.1 The subjectDirectoryAttributes extension
petrasSubjDirAttrs AttributesSyntax ::= {
    {
        type id-pda-countryOfCitizenship,
        values {
            PrintableString : "DE"
        }
    },
    {
        type id-pda-gender,
        values {
            PrintableString : "F"
        }
    },
    {
        type id-pda-dateOfBirth,
            values {
                GeneralizedTime : "197110140000Z"
            }
        },
        {
            type id-pda-placeOfBirth,
            values {
                DirectoryString : utf8String : "Darmstadt"
            }
        }
    }
}
    
C.1.1.2 The keyUsage extension
petrasKeyUsage KeyUsage ::= {nonRepudiation}
    
C.1.1.3 The certificatePolicies extension
petrasCertificatePolicies CertificatePoliciesSyntax ::= {
    {
        policyIdentifier {1 3 36 8 1 1}
    }
}
    
C.1.1.4 The qcStatements extension
petrasQCStatement QCStatements ::= {
    {
        statementId id-qcs-pkixQCSyntax-v1,
        statementInfo SemanticsInformation : {
            nameRegistrationAuthorities {
                rfc822Name : "municipality@darmstadt.de"
            }
        }
    }
}
    
C.1.1.5 The authorityKeyIdentifier extension
petrasAKI AuthorityKeyIdentifier ::= {
    keyIdentifier '000102030405060708090A0B0C0D0E0FFEDCBA98'H
}
    

C.1.2 証明書 English

以下に、 [X.680] に定義された値の表記法で、 証明書の署名された部分を示しています。 この構造において、拡張領域の値は、 既にDERエンコード化されたことに注意してください。 読みやすくするために、いくつかの値が省略されています。

{
  version v3,
  serialNumber 1234567890,
  signature
  {
    algorithm { 1 2 840 113549 1 1 5 },
    parameters RSAParams : NULL
  },
  issuer rdnSequence :
    {
      {
        {
          type { 2 5 4 6 },
          value PrintableString : "DE"
        }
      },
      {
        {
          type { 2 5 4 10 },
          value UTF8String :
            "GMD - Forschungszentrum Informationstechnik GmbH"
        }
      }
    },
  validity
    {
      notBefore utcTime : "000501100000Z",
      notAfter utcTime : "001101100000Z"
    },
  subject rdnSequence :
    {
      {
        {
          type { 2 5 4 6 },
          value PrintableString : "DE"
        }
      },
      {
        {
          type { 2 5 4 10 },
          value UTF8String :
            "GMD Forschungszentrum Informationstechnik GmbH"
        }
      },
      {
        {
          type { 2 5 4 4 },
          value UTF8String : "Barzin"
        },
        {
          type { 2 5 4 42 },
          value UTF8String : "Petra"
        }
      }
    },
  subjectPublicKeyInfo
  {
    algorithm
    {
      algorithm { 1 2 840 113549 1 1 1 },
      parameters RSAParams : NULL
    },
    subjectPublicKey '00110000 10000001 10000111 00000010 1000 ...'B
  },
  extensions
  {
    {
      extnId { 2 5 29 9 },  -- subjectDirectoryAttributes
      extnValue '305B301006082B06010505070904310413024445300F0 ...'H
    },
    {
      extnId { 2 5 29 15 }, -- keyUsage
      critical TRUE,
      extnValue '03020640'H
    },
    {
      extnId { 2 5 29 32 }, -- certificatePolicies
      extnValue '3009300706052B24080101'H
    },
    {
      extnId { 2 5 29 35 }, -- authorityKeyIdentifier
      extnValue '30168014000102030405060708090A0B0C0D0E0FFEDCBA98'H
    },
    {
      extnId { 1 3 6 1 5 5 7 1 3 }, -- qcStatements
      extnValue '302B302906082B06010505070B01301D301B81196D756 ...'H
    }
  }
}
    

C.2 ASN.1 ダンプ English

この節は、 証明書の署名された部分のASN.1ダンプを記述してあります。 読みやすくするためにいくつかの値は省略されています。

   TBSCertificate SEQUENCE: tag = [UNIVERSAL 16] constructed;

     length = 631

     version : tag = [0] constructed; length = 3

       Version INTEGER: tag = [UNIVERSAL 2] primitive; length = 1

         2

     serialNumber CertificateSerialNumber INTEGER: tag = [UNIVERSAL 2]

       primitive; length = 4

       1234567890

     signature AlgorithmIdentifier SEQUENCE: tag = [UNIVERSAL 16]

       constructed; length = 13

       algorithm OBJECT IDENTIFIER: tag = [UNIVERSAL 6] primitive;

         length = 9

         { 1 2 840 113549 1 1 5 }

       parameters OpenType: NULL: tag = [UNIVERSAL 5] primitive;

         length = 0

         NULL

     issuer Name CHOICE

       rdnSequence RDNSequence SEQUENCE OF: tag = [UNIVERSAL 16]

         constructed; length = 72

         RelativeDistinguishedName SET OF: tag = [UNIVERSAL 17]

           constructed; length = 11

           AttributeTypeAndValue SEQUENCE: tag = [UNIVERSAL 16]

             constructed; length = 9

             type OBJECT IDENTIFIER: tag = [UNIVERSAL 6] primitive;

               length = 3

               { 2 5 4 6 }

             value OpenType: PrintableString: tag = [UNIVERSAL 19]

               primitive; length = 2

               "DE"

         RelativeDistinguishedName SET OF: tag = [UNIVERSAL 17]

           constructed; length = 57

           AttributeTypeAndValue SEQUENCE: tag = [UNIVERSAL 16]

           constructed; length = 55

             type OBJECT IDENTIFIER: tag = [UNIVERSAL 6] primitive;

               length = 3

               { 2 5 4 10 }

             value OpenType : UTF8String: tag = [UNIVERSAL 12]

               primitive; length = 48

               0x474d44202d20466f72736368756e67737a656e7472756d2049...

     validity Validity SEQUENCE: tag = [UNIVERSAL 16] constructed;

       length = 30

       notBefore Time CHOICE

           000501100000Z

       notAfter Time CHOICE

         utcTime UTCTime: tag = [UNIVERSAL 23] primitive; length = 13

           001101100000Z

     subject Name CHOICE

       rdnSequence RDNSequence SEQUENCE OF: tag = [UNIVERSAL 16]

         constructed; length = 101

         RelativeDistinguishedName SET OF: tag = [UNIVERSAL 17]

           constructed; length = 11

           AttributeTypeAndValue SEQUENCE: tag = [UNIVERSAL 16]

             constructed; length = 9

             type OBJECT IDENTIFIER: tag = [UNIVERSAL 6] primitive;

               length = 3

               { 2 5 4 6 }

             value OpenType: PrintableString: tag = [UNIVERSAL 19]

               primitive; length = 2

               "DE"

         RelativeDistinguishedName SET OF: tag = [UNIVERSAL 17]

           constructed; length = 55

           AttributeTypeAndValue SEQUENCE: tag = [UNIVERSAL 16]

             constructed; length = 53

             type OBJECT IDENTIFIER: tag = [UNIVERSAL 6] primitive;

               length = 3

               { 2 5 4 10 }

             value OpenType: UTF8String: tag = [UNIVERSAL 12]

               primitive; length = 46

               0x474d4420466f72736368756e67737a656e7472756d20496e66...

         RelativeDistinguishedName SET OF: tag = [UNIVERSAL 17]

           constructed; length = 29

           AttributeTypeAndValue SEQUENCE: tag = [UNIVERSAL 16]

             constructed; length = 13

             type OBJECT IDENTIFIER: tag = [UNIVERSAL 6] primitive;

               length = 3

               { 2 5 4 4 }

             value OpenType: UTF8String: tag = [UNIVERSAL 12]

               primitive; length = 6

               0x4261727a696e

           AttributeTypeAndValue SEQUENCE: tag = [UNIVERSAL 16]

             constructed; length = 12

             type OBJECT IDENTIFIER: tag = [UNIVERSAL 6] primitive;

               length = 3

               { 2 5 4 42 }

             value OpenType: UTF8String: tag = [UNIVERSAL 12]

               primitive; length = 5

               0x5065747261

     subjectPublicKeyInfo SubjectPublicKeyInfo SEQUENCE: tag =

       [UNIVERSAL 16] constructed; length = 157

       algorithm AlgorithmIdentifier SEQUENCE: tag = [UNIVERSAL 16]

         constructed; length = 13

         algorithm OBJECT IDENTIFIER: tag = [UNIVERSAL 6] primitive;

           length = 9

           { 1 2 840 113549 1 1 1 }

         parameters OpenType: NULL: tag = [UNIVERSAL 5] primitive;

           length = 0

           NULL

       subjectPublicKey BIT STRING: tag = [UNIVERSAL 3] primitive;

         length = 139

         0x0030818702818100b8488400d4b6088be48ead459ca19ec717aaf3d1d...

     extensions : tag = [3] constructed; length = 233

       Extensions SEQUENCE OF: tag = [UNIVERSAL 16] constructed;

         length = 230

         Extension SEQUENCE: tag = [UNIVERSAL 16] constructed;

           length = 100

           extnId OBJECT IDENTIFIER: tag = [UNIVERSAL 6] primitive;

             length = 3

             { 2 5 29 9 }

           extnValue OCTET STRING: tag = [UNIVERSAL 4] primitive;

             length = 93

             0x305b301006082b06010505070904310413024445300f06082b060...

         Extension SEQUENCE: tag = [UNIVERSAL 16] constructed;

           length = 14

           extnId OBJECT IDENTIFIER: tag = [UNIVERSAL 6] primitive;

             length = 3

             { 2 5 29 15 }

           critical BOOLEAN: tag = [UNIVERSAL 1] primitive; length = 1

             TRUE

           extnValue OCTET STRING: tag = [UNIVERSAL 4] primitive;

             length = 4

             0x03020640

         Extension SEQUENCE: tag = [UNIVERSAL 16] constructed;

           length = 18

           extnId OBJECT IDENTIFIER: tag = [UNIVERSAL 6] primitive;

             length = 3

             { 2 5 29 32 }

           extnValue OCTET STRING: tag = [UNIVERSAL 4] primitive;

             length = 11

             0x3009300706052b24080101

         Extension SEQUENCE: tag = [UNIVERSAL 16] constructed;

           length = 31

           extnId OBJECT IDENTIFIER: tag = [UNIVERSAL 6] primitive;

             length = 3

             { 2 5 29 35 }

           extnValue OCTET STRING: tag = [UNIVERSAL 4] primitive;

             length = 24

             0x30168014000102030405060708090a0b0c0d0e0ffedcba98

         Extension SEQUENCE: tag = [UNIVERSAL 16] constructed;

           length = 57

           extnId OBJECT IDENTIFIER: tag = [UNIVERSAL 6] primitive;

             length = 8

             { 1 3 6 1 5 5 7 1 3 }

           extnValue OCTET STRING: tag = [UNIVERSAL 4] primitive;

             length = 45

             0x302b302906082b06010505070b01301d301b81196d756e6963697...

C.3 DER エンコーディング English

この節は、 DERエンコードされた完全な証明書を16進法で表現しています。

3082030E30820277A0030201020204499602D2300D06092A864886F70D010105
05003048310B300906035504061302444531393037060355040A0C30474D4420
2D20466F72736368756E67737A656E7472756D20496E666F726D6174696F6E73
746563686E696B20476D6248301E170D3030303530313130303030305A170D30
30313130313130303030305A3065310B30090603550406130244453137303506
0355040A0C2E474D4420466F72736368756E67737A656E7472756D20496E666F
726D6174696F6E73746563686E696B20476D6248311D300C060355042A0C0550
65747261300D06035504040C064261727A696E30819D300D06092A864886F70D
010101050003818B0030818702818100B8488400D4B6088BE48EAD459CA19EC7
17AAF3D1D4EE3ECCA496128A13597D16CC8B85EB37EFCE110C63B01E684E5CF6
32291EAC60FD153C266EAAC36AD4CEA92319F9BFDD261AD2BFE41EAB4E17FE67
8341EE52D9A0A8B4DEC07B7ACC76762514045CEE9994E0CF37BAE05F8DE33B35
FF98BCE77742CE4B12273BD122137FE9020105A381E93081E630640603551D09
045D305B301006082B06010505070904310413024445300F06082B0601050507
09033103130146301D06082B060105050709013111180F313937313130313430
30303030305A301706082B06010505070902310B0C094461726D737461647430
0E0603551D0F0101FF04040302064030120603551D20040B3009300706052B24
080101301F0603551D23041830168014000102030405060708090A0B0C0D0E0F
FEDCBA98303906082B06010505070103042D302B302906082B06010505070B01
301D301B81196D756E69636970616C697479406461726D73746164742E646530
0D06092A864886F70D01010505000381810048FD14D9AFE961E4321D9AA40CC0
1C12893550CF76FBECBDE448926B0AE6F904AB89E7B5F808666FB007218AC18D
28CE1E2D40FBF8C16B275CBA0547D7885B74059DEC736223368FC1602A510BC1
EB31E39F3967BE6B413D48BC743A0AB19C57FD20F3B393E8FEBD8B05CAA5007D
AD36F9D789AEF636A0AC0F93BCB3711B5907
    

C.4 CAの公開RSA鍵 English

この節は、 証明書例に署名したCAのDERエンコード化された公開RSA鍵を示します。 ここに添付する目的は、 証明書例を簡単に検証できるようにするためです。

30818902818100ad1f35964b3674c807b9f8a645d2c8174e514b69a4b46a7382
915abbc44eccede914dae8fcc023abcea9c53380e641795cb0dda664b872fc10
9f9bbb852bf42d994f634c681608e388dce240b558513e5b60027bd1a07cef9c
9b6db37c7e1f1abd238eed96e4b669056b260f55e83f14e6027127c9deb3ad18
afcd3f8a5f5bf50203010001
    

Stefan Santesson
AddTrust AB
P.O. Box 465
S-201 24 Malmo
Sweden

EMail: stefan@addtrust.com

Tim Polk
NIST
Building 820, Room 426
Gaithersburg, MD 20899, USA

EMail: wpolk@nist.gov

Petra Barzin
SECUDE - Sicherheitstechnologie Informationssysteme GmbH
Landwehrstrasse 50a
D-64293 Darmstadt
Germany

EMail: barzin@secude.com

Magnus Nystrom
RSA Security AB
Box 10704
S-121 29 Stockholm
Sweden

EMail: magnus@rsasecurity.com

著作権表記全文 English

Copyright (C) The Internet Society (2001). All Rights Reserved.

本書およびその翻訳物は、複写および配布が可能です。 また、この文書に論評や説明を加えたり、 その実装を補助するものは、 上記の著作権表示およびこの節を付加していれば、 全体あるいは一部であっても一切の制約を課されることなく作成、 複製、発表、配布が可能です。 しかしながら、このドキュメント自体に対して、 著作権表示やインターネット・ソサエティもしくは他のインターネット関連団体への参照を取り除くなどの変更を加えてはいけません。 インターネット標準化過程で定義されている著作権のための手続きに従って、 インターネット標準を開発するために必要な場合や、 RFCを英語以外の言語に翻訳する必要がある場合はその限りではありません。

上記の制限は永続的なものであり、 インターネット・ソサエティもしくはその継承者や譲渡者によって取り消されることはありません。

このドキュメントとここに含まれた情報はいかなる変更を加えることもなく提供されます。 インターネット・ソサエティおよびIETFは、 ここで示される情報の使用がいかなる権利をも侵害しないことの保証、 商用目的や特定利用への適応性への保証を含めすべての保証を明示的にも暗黙的にも行なうことはありません。

謝辞

現在RFCエディター(RFC Editor)の運営資金はインターネット学会によって提供されています。