ネットワーク WG
Request for Comments: 3739
廃止: 3039
分類: スタンダードトラック
S. Santesson
Microsoft
M. Nystrom
RSA Security
T. Polk
NIST
2004年3月

English

インターネットX.509 PKI:適格証明書プロファイル
(Internet X.509 Public Key Infrastructure: Qualified Certificates Profile)

このメモの位置づけ

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

著作権表記

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

要旨

本書は、自然人に発行された身分証明の証明書のための、 RFC 3280に基づく証明書プロファイルを規定する。

このプロファイルは、 定義された法的フレームワークの中で特定される証明書である、 適格証明書(Qualified Certificate)と呼ばれる証明書のための明確な規約を定義する。 しかし、このプロファイルは、 そのような適格証明書に対する法的な要件を何ら規定しない。

本書の目的は、ローカルな法的要件とは無関係に、 適格証明書の発行をサポートする証明書プロファイルを定義することである。 しかし、このプロファイルは適格証明書や特定のローカルの要求を促進するプロファイルに限定されるものではない。

目次

  1. 1. はじめに
    1. 1.1. RFC 3039からの変更点
    2. 1.2. 定義
  2. 2. 要件と仮定
    1. 2.1. プロパティ
    2. 2.2. 目的の宣言
    3. 2.3. ポリシーに関する論点
    4. 2.4. 名前の一意性
  3. 3. 証明書および証明書拡張のプロファイル
    1. 3.1. 証明書基本フィールド
      1. 3.1.1. 発行者(Issuer)
      2. 3.1.2. サブジェクト(Subject)
    2. 3.2. 証明書拡張
      1. 3.2.1. サブジェクト別名(Subject Alternative Name)
      2. 3.2.2. サブジェクトディレクトリ属性(Subject Directory Attributes)
      3. 3.2.3. 証明書ポリシー(Certificate Policies)
      4. 3.2.4. 鍵用途(Key Usage)
      5. 3.2.5. バイオメトリック情報(Biometric Information)
      6. 3.2.6. QC宣言(Qualified Certificate Statements)
  4. 4. セキュリティに関する考慮事項
  5. A. ASN.1定義
    1. A.1. 1988 ASN.1モジュール(規範)
    2. A.2. 1997 ASN.1モジュール(参考資料)
  6. B. 属性についての注意点
  7. 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. 認証局の公開鍵
  8. 参考文献
  9. 著者のアドレス
  10. 著作権表記全文

1. はじめに English

本仕様は、 インターネット上のX.509 PKI(公開鍵インフラストラクチャ)標準の体系の一部である。 本仕様は、 本標準の完全な実装のために必要となる証明書フォーマットおよび意味を定義している [X.509] および [RFC 3280] に基づいている。

このプロファイルは、 適格証明書と共に使用することを意図した特定のメカニズムを含んでいる。 適格証明書という用語と、 本書の規定範囲に影響する仮定については2章で論じられる。

3章では、証明書の情報内容に関する要件を定義する。 本仕様では2つの証明書フィールドである発行者(issuer)とサブジェクト(subject)のためのプロファイルを提供する。:

また、RFC 3280で定義されている4つの証明書拡張である「サブジェクト別名(subjectAltName)」、 「サブジェクトディレクトリ属性(subjectDirectoryAttributes)」、 「証明書ポリシー(certificatePolicies)」および「鍵用途(keyUsage)」のためのプロファイルを提供する。 さらに、2つの追加の拡張として、 「バイオメトリック情報(biometoricInformation)」および「適格証明書宣言(qualifiedCertificateStatements)」を定義する。 証明書拡張は、1997 Abstract Syntax Notation One (ASN.1) [X.680] で示されているが、 RFC3280に準拠して、付録Aの1988 ASN.1モジュールは、 すべての規範となる定義を含んでいる。 (付録Aの1997モジュールは、情報提供にすぎない。)

4章では、 この標準を利用した場合のセキュリティ背景を明らかにするために、 いくつかの「セキュリティに関する考慮事項」について検討する。

付録Aでは、 RFC 3280では定義されていないすべての関連するASN.1構造を示す。 付録Bでは、属性に関する注記を示す。 付録Cでは、証明書の例を示す。 付録の章に続いて、参考文献著者のアドレス著作権表記全文を載せる。

1.1. RFC 3039からの変更点 English

本仕様は、RFC 3039を置き換えるものである。 本仕様は、以下の基本的な分野においてRFC 3039と異なる。:

1.2. 定義 English

本書中の(大文字で書かれた)キーワード"MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", "SHALL", "RECOMMENDED", "MAY", "OPTIONAL"は、 BCP 14 [RFC2119] に記述されたように解釈されるべきものである。

2. 要件と仮定 English

「適格証明書(Qualified Certificate)」という用語は、 欧州電子署名法を適用した特定の種類の証明書について言及するために、 「電子署名についての欧州指令(European Directive on Electronic Signature)」 [EU-ESDIR] によって使われている。 この仕様は、 このような種類の証明書をサポートすることを意図されたものではあるが、 その対象範囲は、このような利用に限定するものではない。

この標準において、「適格証明書(Qualified Certificate)」という用語は、 一般的にその主たる目的が高い保証レベルによって個人を識別する証明書を表すために使われる。 この証明書は、「電子署名についての欧州指令」 [EU-ESDIR] といった適用する法的なフレームワークにより規定されるいくつかの資格要件に見合うものである。 特定の法律に従って、 証明書を「適格証明書」と見なすべきか否かを決定する実際のメカニズムは、 この標準の範囲外とする。

特定の適格証明書において、 個人を特定する自然人に対して発行される証明書のフィールドを調和することは、 RFC 3280の範囲外となるいくつかの局面において本質的なものである。 本仕様の範囲に影響する最も重要な観点は、以下のとおりである。:

2.1. プロパティ English

このプロファイルは、 以下の仮定に基づく適格証明書のプロファイル要件に適応している。:

2.2. 目的の宣言 English

このプロファイルは、 証明書中でそれが適格証明書であるための目的を果たすことを宣言するための規約を定義する。 これによって、認証局は、 明示的にこの意図を定義することができるようになる。

それゆえ、この宣言の役目は、 適格証明書に基づく署名を生成したり受理したりすることに伴うリスクを評価することに関心のある者を支援することにある。

このプロファイルは、この情報を含めるための2つのやり方を提供する。:

2.3. ポリシーに関する論点 English

一定のポリシーの観点から、 そのプロファイルが理解され利用されることになっている状況を定義するものとする。 しかし、 このプロファイルに従った証明書を発行したり利用したりするサービスを制御するポリシーや法的な側面を規定することは、 このプロファイルの範囲外である。

しかし、 責任がある発行認証局が自らの義務・実施・手順と矛盾の無い証明書ポリシーに従うことを約束するということは、 このプロファイル中で基礎をなす仮定である。

2.4. 名前の一意性 English

識別名は、元来、ディレクトリ名の表現として X.501 [X.501] で定義されている。 識別名は、 すべてのオブジェクトの集合中からある特定のオブジェクトを識別する構成子として定義されている。 識別名は、発行者名フィールドにより定義されるひとつの認証局の生存期間中、 その認証局によって保証される個々のサブジェクトエンティティに対して一意でなければならない(MUST)

3. 証明書および証明書拡張のプロファイル English

本章では、証明書プロファイルの規約を既定する。 プロファイルは、 X.509バージョン3フォーマットに基づくインターネット証明書プロファイルRFC 3280に基づいている。 本章の完全な実装のために、実装者は、 RFC 3280で定義された基本的なフォーマットや意味を考慮することが要求される(REQUIRED)

本章に関連するRFC 3280では与えられていないASN.1の定義は、 付録Aにおいて提供されている。

3.1. 証明書基本フィールド English

本節では、証明書基本フィールドの2つのフィールドの内容に関して、 補足的な詳細を提供する。 2つのフィールドとは、 発行者(Issuer)フィールドとサブジェクト(Subject)フィールドである。

3.1.1. 発行者(Issuer) English

issuerフィールドは、 証明書の発行に対して責任を負う組織を識別するものとする(SHALL)。 名前は、公式に登録された組織の名称である必要がある(SHOULD)

発行者の識別名は、 次の属性の適切なサブセットを用いて指定されるものとする(SHALL) 。:

domainComponent
countryName
stateOrProvinceName
organizationName
localityName
serialNumber
    

domainComponent属性は [RFC 2247] において定義されている。 他のすべての属性は [RFC 3280] および [X.520] において定義されている。

追加的な属性が存在してもよい(MAY)が、その追加的な属性は、 発行する組織を特定するために必要不可欠なものであってはいけない(SHOULD NOT)

信頼者は、 名前フィールドの意味を確定するために関連付けられた証明書ポリシー、 かつ/または、発行者の CPS を調べる必要がある可能性がある(MAY)

3.1.2. サブジェクト(Subject) English

このプロファイルに準拠する証明書のサブジェクトフィールドは、 サブジェクトの識別名を含むものとする(SHALL)。 (識別名の定義については2.4節参照。)

サブジェクトフィールドは、 以下に示す属性の適切なサブセットを含むものとする(SHALL)。:

domainComponent
countryName
commonName
surname
givenName
pseudonym
serialNumber
title
organizationName
organizationalUnitName
stateOrProvinceName
localityName.
    

domainComponent属性は、 [RFC 2247] において定義されている。 他のすべての属性は、[RFC 3280] および [X.520] において定義されている。

他の属性も存在してもよい(MAY)が、他の属性の利用は、 あるサブジェクト名と他のサブジェクト名を区別するために必要であってはならない(MUST NOT)。 すなわち、上述の属性は、 一意なサブジェクト名を保証するのに十分なものである。

これらの属性において、サ ブジェクトフィールドは少なくとも以下のひとつを含むものとする(SHALL)。:

Choice I: commonName
Choice II: givenName
Choice III: pseudonym
    

countryName属性の値は、 他の属性を理解するための一般的なコンテキストを指定する。 country属性は、必ずしも、サブジェクトが市民権を持つ国や、 居住国を示さず、また発行した国を示さない。

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

commonName属性の値は、存在する場合、 サブジェクトの名前を含むものとする(SHALL)。 これは、サブジェクトが選択したフォーマット、認証局が選択したもの、 あるいは他のフォーマットであってもよい(MAY)。 仮名、ニックネームや登録名により定義されたものと違うスペルの名前を使ってもよい(MAY)。 commonNameで表現される名前の本質を理解するために、標 準準拠したアプリケーションは、 givenNameとsurname属性の値の組み合わせ、 もしくは仮名の属性を検証する必要がある可能性がある(MAY)

注意:多くのクライアントアプリケーションは、 サブジェクトフィールド中にcommonName属性の値が存在することを前提とし、 givenName、surname、 pseudonym属性の値の存在にかかわらずサブジェクトの名前を表示するために、 この値を用いる。

surnameおよびgivenName属性タイプは、 commonName属性やpseudonym属性が存在しない場合、 サブジェクトフィールドにおいて使うものとする(SHALL)。 サブジェクトがgivenNameしか持たない場合、 surname属性を省略するものとする(SHALL)

pseudonym属性タイプが存在する場合、 それはサブジェクトの仮名を含むものとする(SHALL)。 pseudonym属性の使用は、surname、かつ/または、 givenName属性のいずれかの使用と組み合わせてはならない(MUST NOT)

serialNumber属性タイプが存在する場合、 それはサブジェクトフィールドが同一であるような状況で、 名前を区別するのに用いるものとする(SHALL)。 この属性は、サブジェクト名の一意性を保証する他に、 定義された意味を何ら持たない。 これは認証局に割り当てられた数字やコード、 政府や市政当局により割り当てられた識別子をを含むことができる(MAY)。 シリアル番号がサブジェクトの名前の衝突を解決するために十分であることを保証する事については認証局が責任を負う。

title属性タイプが存在する場合、それは、 サブジェクトフィールド中に存在する組織属性により指定される組織の中で、 サブジェクトの任命された地位や役割を格納するために使用されるものとする(SHALL)。 title、サブジェクトおよび組織の間の関連付けは、本書の範囲外である。

organizationNameおよびorganizationalUnitName属性タイプが存在する場合、 それはサブジェクトと結びついている組織の名称および関連情報を格納するために使用されるものとする(SHALL)。 その組織とサブジェクトとの関連の種類については、本書の範囲外である。

stateOrProvinceNameおよびlocalityName属性タイプが存在する場合、 それは、サブジェクトに関連付けられた地理的な情報を格納するために使用されるものとする(SHALL)。 organizationNameの値もまた存在する場合、 stateOrProvinceNameおよびlocalityName属性値は指定されたorganizationに関連づけられるものとする(SHALL)。 stateOrProvinceName、 localityNameとサブジェクトもしくはorganizationNameとの関係は、 本書の範囲外である。

標準に準拠した実装は、 本節で命名された属性を解釈できるものとする(SHALL)

3.2. 証明書拡張 English

本節では、RFC 3280で定義された「サブジェクト別名」、 「サブジェクトディレクトリ属性」、 「証明書ポリシー」および「鍵用途」の4つの証明書拡張の内容に関する補足的な詳細を提供する。 本節では、2つの追加的拡張も定義する。:

「バイオメトリック情報」と「QC宣言(qualified certificate statements)」。

3.2.1. サブジェクト別名(Subject Alternative Name) English

サブジェクト別名(subjectAltName)拡張が存在し、 その中にdirectoryNameの名称が存る場合、 directoryNameは、 このプロファイル3.1.2節で規定された規約に従わなければならない(MUST)

3.2.2. サブジェクトディレクトリ属性(Subject Directory Attributes) English

サブジェクトディレクトリ属性(subjectDirectoryAttributes)拡張が在る可能性があり(MAY)、 サブジェクトフィールドおよびサブジェクト別名に存在する情報の補足として、 サブジェクトと関連する追加の属性を含めることができる(MAY)

この拡張に格納するのにふさわしい属性は、 サブジェクトの識別名の一部ではない属性であるが、この拡張は、 他の目的にも有用である可能性がある(MAY)。(例:認可)

この拡張は、クリティカルフラグを立ててはならない(MUST NOT)

標準に準拠した実装は以下の属性を解釈できるものとする(SHALL)。:

dateOfBirth
placeOfBirth
gender
countryOfCitizenship
countryOfResidence
    

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

dateOfBirth属性が存在する場合、 サブジェクトの生年月日の値を含むものとする(SHALL)。 サブジェクトに生年月日を関連付ける方法は本書の範囲外である。 生年月日は、GeneralizedTime形式で定義され、 タイムゾーンの調整による偶発的な変更を避けるために、 (訳注:時分秒の部分には)秒の精度でGMT 12.00.00 (正午)を指定する必要がある(SHOULD)。 例えば、 1959年9月27日の誕生日は"19590927120000Z"のようにエンコードされる。 標準に準拠して証明書を構文解析するアプリケーションは、 時分秒のデータを無視し、 単にタイムゾーンの調整をせずに含まれている年月日を表示する必要がある(SHOULD)

placeOfBirth属性が存在する場合、 サブジェクトの出生地の値が含まれるものとする(SHALL)。 サブジェクトに出生地を関連付ける方法は、本書の範囲外である。

gender属性が存在する場合、 サブジェクトの性別の値が含まれるものとする(SHALL)。 女性の場合"F" (あるいは"f")、 男性の場合"M" (あるいは"m")を値として使用する。 サブジェクトに性別を関連付ける方法は、本書の範囲外である。

countryOfCitizenship属性が存在する場合、 証明書が発行された時点でサブジェクトが市民権を申請した国の少なくともひとつの識別子が含まれるものとする(SHALL)。 市民権を持つ国がひとつ以上指定された場合、 市民権を持つ国それぞれ分離したひとつの値のcountryOfCitizenship属性で指定する必要がある(SHOULD)。 市民権の決定は法的な問題であり、本書の範囲外である。

countryOfResidence属性は存在する場合、 サブジェクトが居住する少なくともひとつの国の値を含むものとする(SHALL)。 ひとつ以上の居住国を指定した場合、 居住国それぞれを分離したひとつの値のcountryOfResidence属性で指定する必要がある(SHOULD)。 居住の決定は法的な問題であり、本書の範囲外である。

3.2.3. 証明書ポリシー(Certificate Policies) English

証明書ポリシー拡張は、存在するものとし(SHALL)、 認証局によって行われる実施および手順に反映する少なくともひとつの証明書ポリシーの識別子を含むものとする(SHALL)。 証明書ポリシー拡張は、クリティカルにしてもよい(MAY)

2.2節で言及されるように、 証明書の目的を表す発行者により提供される情報は、 示されるポリシーを通じて明白である必要がある(SHOULD)

証明書ポリシー拡張は、 認証パス検証で必要となるすべてのポリシー情報を含まなければならない(MUST)。 もしポリシに関連する宣言がQC宣言拡張(3.2.6節参照)に含まれるならば、 これらの宣言はまた、 識別されたポリシーに含まれる必要がある(SHOULD)

証明書ポリシーは、 RFC 3280で定義される任意の修飾子と組み合わせることができる(MAY)

3.2.4. 鍵用途(Key Usage) English

鍵用途拡張が存在するものとする(SHALL)。 鍵用途の設定は、 RFC 3280の定義に従って設定されるものとする(SHALL)。 鍵用途の設定に関するさらなる要件は、 ローカルポリシーおよび/もしくはローカルな法的要件により定義することができる(MAY)

鍵用途拡張は、クリティカルフラグが立っている必要がある(SHOULD)

3.2.5. バイオメトリック情報(Biometric Information) English

本節では、 バイオメトリック情報を保持するためのオプションとしての(OPTIONAL)拡張を定義する。 バイオメトリック情報は、 バイオメトリックテンプレートのハッシュの形式で格納される。

この拡張の目的は、生体情報の認証のための手段を提供することである。 格納されたハッシュに対応する生体情報はこの拡張には格納されないが、 この拡張はこの情報を含むファイルへの参照を示すURI(sourceDataUri)を含めることができる(MAY)

(URIを)含む場合、URIは、HTTPスキーム(http://) [HTTP/1.1] もしくはHTTPSスキーム(https://) [RFC 2818] を使わなくてはならない(MUST)。 チェックされる識別データ自身がセンシティブな情報であるという事実により、 このメカニズムを利用している者は、 外部の者から検索される自分たちの識別情報を簡単に結びつけれらないようなURIを使用することも考慮することを望む可能性がある。

URIオプションの使用は、 ファイルの内容のデータエンコードフォーマットが、 ファイル名の規約およびファイル中のメタデータのような、こ の仕様の範囲外の手段を通して決定されると見なす。 このURIオプションの使用は、 この情報にアクセスする唯一の手段であることを意味するものではない。

この拡張における生体情報は、 人間の検証にふさわしい情報の種類に限定することが推奨される(RECOMMENDED)。 すなわち、 その情報がサブジェクトの適切な表現になっているかどうかという決定が本来、 人間によって検証が行なわれるようにすることである。 これは、例えば、 検証者に対して生体情報がグラフィカルイメージディスプレイに表示されるような場合、 検証者がサブジェクトの識別を強化するために使用できる(MAY)ことを意味する。

この拡張は、クリティカルフラグを立ててはならない(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,...)
    

あらかじめ定義されたバイオメトリクスタイプ'picture'が存在する場合、 元の画像がサブジェクトの表示可能な画像イメージの形式で格納されていることを確認するものとする(SHALL)。 画像イメージのハッシュは参照される画像ファイル全体から計算されるものとする(SHALL)

あらかじめ定義されたバイオメトリクスタイプ'handwritten-signature'が存在する場合、 元のデータが、サブジェクトによる手書きした署名の表示可能な画像イメージの形式で格納されていることを確認するものとする(SHALL)。 画像イメージのハッシュは、 参照される画像ファイル全体から計算されるものとする(SHALL)

3.2.6. QC宣言(Qualified Certificate Statements) English

本節では、 証明書の明示的な特性を定義する宣言を含めるためのオプションとしての(OPTIONAL)拡張を定義する。

個々の宣言は、宣言のオブジェクト識別子を含めるものとし(SHALL)、 また、statementInfoパラメータ中に含まれる修飾するデータのオプションも含めることができる(MAY)

statementInfoパラメータが含まれる場合、宣言のオブジェクト識別子は、 シンタックスを定義するものとし(SHALL)、 このパラメータの意味を定義する必要がある(SHOULD)。 そのオブジェクト識別子が意味を定義しない場合、 検証者は正確な意味を決めるために、 関連する証明書ポリシーやCPSを参照しなければならない。

この拡張は、クリティカルである可能性があるが、そうでない可能性もある。 拡張がクリティカルの場合これは、 拡張に含まれるすべての宣言は、 クリティカルであると見なされることを意味する。

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

注意: この拡張は、 クリティカルとそうでないQC宣言を混在させることはできない。す べての宣言がクリティカルであるか、す べての宣言がクリティカルでないかのいずれかでなければならない。

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,...}
    

この拡張に含めるのに相応しい宣言は、 (2.2節で議論するような)特定の法制度に従って適格証明書として発行される証明書の発行者による宣言とすることができる(MAY)

この拡張に含めるのに相応しいもうひとつの宣言は、 証明書が発行される適用法の管轄権に関する宣言とすることができる(MAY)。 例として、 これは認証局の義務に関する制限を示す証明書に最大の信用限度を含めることができる(MAY)

3.2.6.1. 定義済みの宣言 English

証明書宣言(id-qcs-pkixQCSyntax-v1)は、 廃止されたRFC 3039(バージョン1)で定義された要件に準拠していることを識別する。 それゆえ、本宣言は、 RFC 3039に準拠して発行された古い証明書を識別するために提供される。 このプロファイルに準拠して発行された証明書に本宣言を含めてはならない(MUST NOT)

このプロファイルは、 このプロファイルで定義された要件へ準拠していることを識別する(OID id-qcs-pkixQCSyntax-v2で識別される)新しいQC宣言を含む。 本適格証明書プロファイルは、 RFC 3039がバージョン1として参照されるのに対し、 バージョン2として参照される。

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

この宣言は、RFC 3039 (バージョン1)で定義された要件への準拠性を識別する。 本宣言は、オプションとして、 以下に述べるような追加の意味情報を含めることができる。

qcStatement-2 QC-STATEMENT ::= { SYNTAX SemanticsInformation
    IDENTIFIED BY id-qcs-pkixQCSyntax-v2 }
    

この宣言は、 本適格証明書プロファイル(バージョン2)で定義された要件への準拠性を識別する。 この宣言は、オプションとして、 以下に述べるような追加の意味情報を含めることができる。

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-qcs-pkixQCSyntax-v1により識別されるSementicsInformationコンポーネントは、 意味識別子を含むことができ(MAY)、 ひとつ以上の名前登録局(name registration authority)を識別することができる(MAY)

semanticsIdentifierコンポーネントが存在する場合、それは、 証明書基本フィールドおよび証明書拡張フィールド中の属性および名前に対する意味を定義するOIDを含むものとする(SHALL)。 OIDは、 すべての存在する属性および/もしくは名前のうちの全体もしくは一部の意味を定義することができる。

NameRegistrationAuthoritiesコンポーネントが存在する場合、 ひとつ以上の名前登録局の名前を含むものとする(SHALL)。 名前登録局はサブジェクトと関係付けられた属性や名前の登録に関して責任を負う。 識別された名前登録局と存在する属性との間の関連付けは、 意味識別子のOID、証明書ポリシー(あるいはCPS)、 もしくは何らかの暗黙的な要素により定義することができる(MAY)

statementIDコンポーネントにid-qcs-pkix-QCSyntax-v1もしくはid-qcs-pkix-QCSyntax-v2が設定されているQCStatement中に、 SemanticsInformationタイプの値が存在する場合、これが示す通り、 少なくともsemanticsIdentifier もしくは nameRegistrationAuthorities のいずれかのフィールドが存在しなければならない。 statementIDコンポーネントにid-qcs-pkix-QCSyntax-v1もしくはid-qcs-pkix-QCSyntax-v2が設定されていたとしても、 QCStatement値の中に statementInfoが存在する必要はないことに注意しなければならない。

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

適格証明書により検証される電子署名の法的な価値は、 関連するプライベート鍵の使用法を統括するポリシーに大いに依存する。 プライベート鍵の保持者と同様に検証者の両者が、 正当な鍵の保有者の合意の下にのみプライベート鍵が使われることを確認する必要がある。

公開鍵は、関係する機関の法的関連性と共に公用のものであるので、 認証局が適格証明書として証明書を発行する以前に、 ある条件が存在する必要がある。 関連するプライベート鍵はサブジェクト毎に一意でなければならず、 サブジェクト単独の制御の下で管理されなければならない。 すなわち、プライベート鍵を使用する手段が意図しない使用に対して保護されてない場合には、 認証局は適格証明書を発行してはならない。 これは、認証局がサブジェクトの暗号モジュールに関する何らかの情報を持っていることを意味する。

認証局は、さらに、 証明書に含まれる公開鍵が正しくサブジェクトを表していることを検証しなければならない。

認証局は、これらの条件に合致しない限り、 他の認証局のポリシーの受理を示すためのポリシーマッピング拡張を伴う認証局証明書を発行してはならない。

鍵用途(keyUsage)証明書拡張において、 nonRepudiationビットを他のkeyUsageビットと組み合わせることは、 その証明書が使われることになっている状況に依存するセキュリティ上の関連があるかもしれない。 そのような証明書に基づいた電子署名を検証するアプリケーションは、 存在する鍵用途の組み合わせがその使用に対して適切であるかどうかを確かめる必要がある。

2つの適格証明書が同一の物理的なエンティティを表す場合、 これらを比較する能力はサブジェクトの名前の意味に依存する。 特定の属性の意味は、異なる発行者毎に異なる可能性がある。 これらの特定の証明書における名前の意味の知識無しに名前を比較することは、 誤った結果を導くことになる可能性がある。

この仕様は、RFC 3280のプロファイルである。 RFC 3280文書の「セキュリティに関する考慮事項」の章は、 この仕様に対しても同様に適用される。

A. ASN.1定義 English

RFC 3280のように、ASN.1モジュールは、 ASN.1シンタックスの2つの異なる流儀で提供される。

付録A.1は、 1988シンタックスによるものであり、マクロを使っていない。 しかし、このモジュールは、 完全に1988シンタックスではないRFC 3280中のモジュールから型定義をインポートしているので、 その使用に関するRFC 3280中の同じコメントが、ここでも同様に適用される。

付録A.2は、 1997シンタックスで記されている。

これらのモジュール間での食い違いがある場合、 1988モジュールが規範的なものとなる。

A.1. 1988 ASN.1モジュール(規範)

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

DEFINITIONS EXPLICIT TAGS ::=

BEGIN

-- EXPORTS ALL --

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(19)}

AlgorithmIdentifier, DirectoryString, AttributeType, id-pkix, id-pe
     FROM PKIX1Explicit88 {iso(1) identified-organization(3) dod(6)
     internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
     id-pkix1-explicit(18)};

-- Locally defined OIDs

-- Arc for QC personal data attributes
id-pda OBJECT IDENTIFIER ::= { id-pkix 9 }

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

-- Personal data attributes

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

-- Certificate extensions

-- Biometric info extension

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 Statements Extension
-- NOTE: This extension does not allow to mix critical and
-- non-critical Qualified Certificate Statements. Either all
-- statements must be critical or all statements must be
-- non-critical.

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

QCStatements ::= SEQUENCE OF QCStatement

QCStatement ::= SEQUENCE {
     statementId OBJECT IDENTIFIER,
     statementInfo ANY DEFINED BY statementId OPTIONAL}

-- QC statements
id-qcs-pkixQCSyntax-v1 OBJECT IDENTIFIER ::= { id-qcs 1 }
-- This statement identifies conformance with requirements
-- defined in RFC 3039 (Version 1). This statement may
-- optionally contain additional semantics information as specified
-- below.

id-qcs-pkixQCSyntax-v2 OBJECT IDENTIFIER ::= { id-qcs 2 }
-- This statement identifies conformance with requirements
-- defined in this Qualified Certificate profile
-- (Version 2). This statement may optionally contain
-- additional semantics information as specified below.

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. 1997 ASN.1モジュール(参考資料)

PKIXqualified97 {iso(1) identified-organization(3) dod(6)
     internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
     id-mod-qualified-cert-97(35) }

DEFINITIONS EXPLICIT TAGS ::=

BEGIN

-- EXPORTS ALL --

IMPORTS

informationFramework, certificateExtensions, selectedAttributeTypes,
     authenticationFramework, upperBounds, id-at
     FROM UsefulDefinitions {joint-iso-itu-t(2) ds(5) module(1)
     usefulDefinitions(0) 3 }

ub-name
     FROM UpperBounds upperBounds

GeneralName
     FROM CertificateExtensions certificateExtensions

ATTRIBUTE, AttributeType
     FROM InformationFramework informationFramework

DirectoryString
     FROM SelectedAttributeTypes selectedAttributeTypes

AlgorithmIdentifier, Extension, EXTENSION
     FROM AuthenticationFramework authenticationFramework

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

-- Locally defined OIDs

-- Arc for QC personal data attributes
id-pda OBJECT IDENTIFIER ::= { id-pkix 9 }

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

-- Personal data attributes

id-pda-dateOfBirth AttributeType ::= { id-pda 1 }
id-pda-placeOfBirth AttributeType ::= { id-pda 2 }
id-pda-gender AttributeType ::= { id-pda 3 }
id-pda-countryOfCitizenship AttributeType ::= { id-pda 4 }
id-pda-countryOfResidence AttributeType ::= { id-pda 5 }

-- Certificate extensions

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

-- QC statements

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

-- Personal data attributes

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 }

-- Certificate extensions

-- Biometric info extension

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 Statements Extension
-- NOTE: This extension does not allow to mix critical and
-- non-critical Qualified Certificate Statements. Either all
-- statements must be critical or all statements must be
-- non-critical.

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}
     -- This statement identifies conformance with requirements
     -- defined in RFC 3039 (Version 1). This statement
     -- may optionally contain additional semantics information
     -- as specified below.

qcStatement-2 QC-STATEMENT ::= { SYNTAX SemanticsInformation
     IDENTIFIED BY id-qcs-pkixQCSyntax-v2}
     -- This statement identifies conformance with requirements
     -- defined in this Qualified Certificate profile
     -- (Version 2). This statement may optionally contain
     -- additional semantics information as specified below.

SemanticsInformation ::= SEQUENCE {
     semanticsIdentifier OBJECT IDENTIFIER OPTIONAL,
     nameRegistrationAuthorities NameRegistrationAuthorities OPTIONAL
     }(WITH COMPONENTS {..., semanticsIdentifier PRESENT}|
     WITH COMPONENTS {..., nameRegistrationAuthorities PRESENT})

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

-- The following information object set is defined to constrain the
-- set of attributes applications are required to recognize as QCSs.
SupportedStatements QC-STATEMENT ::= {
qcStatement-1 |
qcStatement-2 , ... -- For future extensions -- }

END
    

B. 属性についての注意点 English

本書では、 発行された証明書のサブジェクト(subject)フィールドおよびサブジェクトディレクトリ属性(subjectDirectoryAttributes)拡張の双方で使われるいくつかの新しい属性を定義する。 (マッチングルールを含む)これらの新しい属性の完全な定義は、 LDAPでアクセス可能なディレクトリでサポートするためのオブジェクトクラスと共にPKCS 9 [RFC 2985] で示されている。

C. サンプル証明書 English

本節では、ASN.1構造、 ASN.1ダンプおよびこのプロファイルに準拠して発行されたDERエンコードされた証明書を含む。 この例はOSS ASN.1コンパイラの協力により生成された。 証明書は、下記の特性をもっている。 :

  1. 証明書は、 RSA公開鍵暗号とSHA-1ハッシュアルゴリズムを用いて署名されている。
  2. 発行者の([RFC 2253] で規定された文法を用いた)識別名は、次である。: O=GMD - Forschungszentrum Informationstechnik GmbH, C=DE
  3. サブジェクトの([RFC 2253] で規定された文法を用いた)識別名は、以下のものである。:
    CN=Petra+SN=Barzin, O=GMD - Forschungszentrum Informationstechnik GmbH, C=DE (訳注: GN=は、CN= の誤記であると考えられる。)
  4. 証明書は、2004年2月1日に発行され2008年2月1日に失効する。
  5. 証明書は、1024ビットのRSA公開鍵を含んでいる。
  6. 証明書は、 否認防止のみを示すクリティカルフラグが立った鍵用途拡張を含む。
  7. 証明書は、 発行するCAにより行なわれる実施や手続きを示す証明書ポリシー識別子拡張を含む。 (オブジェクト識別子 1.3.36.8.1.1)。 この証明書ポリシーオブジェクト識別子は、 ドイツTeleTrustにより定義されている。
  8. 証明書は、以下の属性を含むサブジェクトディレクトリ属性拡張を含む。:
    生年月日: 1971年10月14日
    出生地: Darmstadt
    市民権のある国:ドイツ
    性別: 女性
  9. 名前登録機関の名称が"municipality@darmstadt.de"であることを示すQC宣言証明書拡張を含む証明書
  10. RFC 3280に準拠したauthority key identifier拡張を含む証明。

C.1. ASN.1構造

C.1.1. 拡張

署名される構造中に置かれた際に、 拡張は既にDERエンコードされているので、 [X.680] で定義された値の表記を用いて、 明確にするためにこれらを示す。

C.1.1.1. subjectDirectoryAttributes拡張
certSubjDirAttrs AttributesSyntax ::= {
     {
          type id-pda-countryOfCitizenship,
          values {
              PrintableString : "DE"
          }
     },
     {
          type id-pda-gender,
          values {
              PrintableString : "F"
          }
     },
     {
          type id-pda-dateOfBirth,
          values {
              GeneralizedTime : "197110141200Z"
          }
     },
     {
          type id-pda-placeOfBirth,
          values {
              DirectoryString : utf8String : "Darmstadt"
          }
     }
}
    
C.1.1.2. 鍵用途(keyUsage)拡張
certKeyUsage KeyUsage ::= {nonRepudiation}
    
C.1.1.3. 証明書ポリシー(certificatePolicies)拡張
certCertificatePolicies CertificatePoliciesSyntax ::= {
     {
         policyIdentifier {1 3 36 8 1 1}
     }
}
    
C.1.1.4. QC宣言(qcStatements)拡張
certQCStatement QCStatements ::= {
     {
         statementId id-qcs-pkixQCSyntax-v2,
         statementInfo SemanticsInformation : {
             nameRegistrationAuthorities {
                  rfc822Name : "municipality@darmstadt.de"
             }
         }
     }
}
    
C.1.1.5. 認証局鍵識別子(authorityKeyIdentifier)拡張
certAKI AuthorityKeyIdentifier ::= {
     keyIdentifier '000102030405060708090A0B0C0D0E0FFEDCBA98'H
}
    

C.1.2. 証明書

[X.680] で定義された値表記で証明書の署名されたものをここに示す。 この構造中で、拡張の値は、 既にDER エンコードされていることに注意されたい。 いくつかの値は、読みやすさを目的として切捨てている。

certCertInfo CertificateInfo ::= {
     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 :
                   }
               }
          },
     validity
     {
          notBefore utcTime : "040201100000Z",
          notAfter utcTime : "080201100000Z"
     },
     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 '30818902818100DCE74CD5...0203010001'H
     },
     extensions
     {
          {
              extnId { 2 5 29 9 }, -- subjectDirectoryAttributes
              extnValue '305B301006082B0601050507090...7374616474'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 '302B302906082B06010505070B0...4742E6465 'H
          }
     }
}
    

C.2. ASN.1ダンプ

本節では、証明書の署名されたものであるASN.1ダンプを示す。 いくつかの値は、読みやすさのために切捨てている。

CertificateInfo SEQUENCE: tag = [UNIVERSAL 16] constructed; length = 633
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
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 } -- id-at-countryName
value PrintableString
"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 } -- id-at-organizationName
value UTF8String
"GMD Forschungszentrum Informationstechnik GmbH"
validity Validity SEQUENCE: tag = [UNIVERSAL 16]
constructed; length = 30
notBefore Time CHOICE
utcTime UTCTime: tag = [UNIVERSAL 23] primitive; length = 13
040201100000Z
notAfter Time CHOICE
utcTime UTCTime: tag = [UNIVERSAL 23] primitive; length = 13
080201100000Z
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 } -- id-at-countryName
value PrintableString
"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 } -- id-at-organizationName
value UTF8String
"GMD Forschungszentrum Informationstechnik GmbH"
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 } -- id-at-surname
value UTF8String
"Barzin"
AttributeTypeAndValue SEQUENCE: tag = [UNIVERSAL 16]
constructed; length = 12
type OBJECT IDENTIFIER: tag = [UNIVERSAL 6]
primitive; length = 3
{ 2 5 4 42 } -- id-at-givenName
value UTF8String
"Petra"
subjectPublicKeyInfo SubjectPublicKeyInfo SEQUENCE:
tag = [UNIVERSAL 16] constructed; length = 159
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 } -- rsaEncryption
parameters OpenType
NULL
subjectPublicKey BIT STRING: tag = [UNIVERSAL 3]
primitive; length = 141
0x0030818902818100dce74cd5a1d55aeb01cf5ecc20f3c3fca787...
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 } -- id-ce-subjectDirectoryAttributes
extnValue OCTET STRING: tag = [UNIVERSAL 4]
primitive; length = 93
0x305b301006082b06010505070904310413024445300f06082...
Extension SEQUENCE: tag = [UNIVERSAL 16]
constructed; length = 14
extnId OBJECT IDENTIFIER: tag = [UNIVERSAL 6]
primitive; length = 3
{ 2 5 29 15 } -- id-ce-keyUsage
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 } -- id-ce-certificatePolicies
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 } -- id-ce-authorityKeyIdentifier
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 } -- id-pe-qcStatements
extnValue OCTET STRING: tag = [UNIVERSAL 4]
primitive; length = 45
0x302b302906082b06010505070b02301d301b81196d756e696...
    

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

本節では、DERエンコードされた証明書全体を16進数表記で示す。

30820310 30820279 A0030201 02020449 9602D230 0D06092A 864886F7 0D010105
05003048 310B3009 06035504 06130244 45313930 37060355 040A0C30 474D4420
2D20466F 72736368 756E6773 7A656E74 72756D20 496E666F 726D6174 696F6E73
74656368 6E696B20 476D6248 301E170D 30343032 30313130 30303030 5A170D30
38303230 31313030 3030305A 3065310B 30090603 55040613 02444531 37303506
0355040A 0C2E474D 4420466F 72736368 756E6773 7A656E74 72756D20 496E666F
726D6174 696F6E73 74656368 6E696B20 476D6248 311D300C 06035504 2A0C0550
65747261 300D0603 5504040C 06426172 7A696E30 819F300D 06092A86 4886F70D
01010105 0003818D 00308189 02818100 DCE74CD5 A1D55AEB 01CF5ECC 20F3C3FC
A787CFCB 571A21AA 8A20AD5D FF015130 DE724E5E D3F95392 E7BB16C4 A71D0F31
B3A9926A 8F08EA00 FDC3A8F2 BB016DEC A3B9411B A2599A2A 8CB655C6 DFEA25BF
EDDC73B5 94FAA0EF E595C612 A6AE5B8C 7F0CA19C EC4FE7AB 60546768 4BB2387D
5F2F7EBD BC3EF0A6 04F6B404 01176925 02030100 01A381E9 3081E630 64060355
1D09045D 305B3010 06082B06 01050507 09043104 13024445 300F0608 2B060105
05070903 31031301 46301D06 082B0601 05050709 01311118 0F313937 31313031
34313230 3030305A 30170608 2B060105 05070902 310B0C09 4461726D 73746164
74300E06 03551D0F 0101FF04 04030206 40301206 03551D20 040B3009 30070605
2B240801 01301F06 03551D23 04183016 80140001 02030405 06070809 0A0B0C0D
0E0FFEDC BA983039 06082B06 01050507 0103042D 302B3029 06082B06 01050507
0B02301D 301B8119 6D756E69 63697061 6C697479 40646172 6D737461 64742E64
65300D06 092A8648 86F70D01 01050500 03818100 8F8C80BB B2D86B75 F4E21F82
EFE0F20F 6C558890 A6E73118 8359B9C7 8CE71C92 0C66C600 53FBC924 825090F2
95B08826 EAF3FF1F 5917C80B B4836129 CFE5563E 78592B5B B0F9ACB5 2915F0F2
BC36991F 21436520 E9064761 D932D871 F71FFEBD AD648FA7 CF3C1BC0 96F112D4
B882B39F E1A16A90 AE1A80B8 A9676518 B5AA7E97
    

C.4. 認証局のRSA公開鍵

本節では、 サンプル証明書を署名した認証局のDERエンコードされたRSA公開鍵を示す。 これは、サンプル証明書の検証を簡単にする目的で含めるものである。

30818902818100c88f4bdb66f713ba3dd7a9069880e888d4321acb53cda7fcdf
da89b834e25430b956d46a438baa6798035af30db378424e00a8296b012b1b24
f9cf0b3f83be116cd8a36957dc3f54cbd7c58a10c380b3dfa15bd2922ea8660f
96e1603d81357c0442ad607c5161d083d919fd5307c1c3fa6dfead0e6410999e
8b8a8411d525dd0203010001
    

参考文献

規範的参考文献

[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 2818] Rescorla, E.,
"HTTP Over TLS",
RFC 2818, 2000年5月.
[RFC 2985] Nystrom, M. and B. Kaliski,
"PKCS #9: Selected Object Classes and Attribute Types Version 2.0",
RFC 2985, 2000年11月.
[RFC 3280] Housley, R., Polk, W., Ford, W. and D. Solo,
「インターネットX.509 PKI:証明書とCRLのプロファイル
(Internet X.509 Public Key Infrastructure: Certificate and Certificate Revocation List (CRL) Profile)」,
RFC 3280(English), 2002年4月.
[X.509] ITU-T Recommendation X.509 (2000) | ISO/IEC 9594-8:2001, Information technology - Open Systems Interconnection - The Directory: Public-key and attribute certificate frameworks
[X.520] ITU-T Recommendation X.520 (2001) | ISO/IEC 9594-6:2001, Information Technology - Open Systems Interconnection - The Directory: Selected Attribute Types, 2001年.
[X.680] ITU-T Recommendation X.680 (2002) | ISO/IEC 8824-1:2002), Information Technology - Abstract Syntax Notation One,  2002年.
[ISO 3166] ISO 3166-1:1997, Codes for the representation of names of countries, 1997年.
[HTTP/1.1] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P. and T. Berners-Lee,
"Hypertext Transfer Protocol -- HTTP/1.1",
RFC 2616, 1999年6月.

参考資料

[X.501] ITU-T recommendation X.501 (2001) | ISO/IEC 9594-2:2001, Information Technology - Open Systems Interconnection - The Directory: Models, 2001年.
[EU-ESDIR] Directive 1999/93/EC of the European Parliament and of the Council of 13 December 1999 on a Community framework for electronic signatures, 1999年.
[RFC 2253] Wahl, M., Kille, S. and T. Howes,
"Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names",
RFC 2253, 1997年12月.

著者のアドレス

Stefan Santesson
Microsoft Denmark
Tuborg Boulevard 12
DK-2900 Hellerup
Denmark

EMail: stefans@microsoft.com

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

EMail: wpolk@nist.gov

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

EMail: magnus@rsasecurity.com

翻訳者のアドレス

漆島 賢二
セコム株式会社 IS 研究所

EMail: k-urushima@secom.co.jp

宮川 寧夫
独立行政法人 情報処理推進機構
セキュリティセンター

EMail: miyakawa@ipa.go.jp

著作権表記全文

Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions contained in BCP 78 and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

知的財産権

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

謝辞

Funding for the RFC Editor function is currently provided by the Internet Society.