Menu Close

付録B ASN.1 および識別名

概要

OSI Abstract Syntax Notation One (ASN.1) および X.500 Distinguished Names は、X.509 証明書および LDAP ディレクトリーを定義するセキュリティー標準で重要な役割を果たします。

B.1. ASN.1

概要

Abstract Syntax Notation One (ASN.1) は、特定のマシンハードウェアやプログラミング言語に依存しないデータ型と構造を定義する方法を提供するために、1980 年代初頭に OSI 標準機関によって定義されました。多くの点で、ASN.1 は、プラットフォームに依存しないデータ型の定義に関係する OMG の IDL や WSDL などの、最新のインターフェース定義言語の先駆けと見なすことができます。

ASN.1 は標準の定義 (SNMP、X.509、LDAP など) で広く使用されているため、重要です。特に、ASN.1 はセキュリティー標準の分野で広く普及しています。X.509 証明書および識別名の正式な定義は、ASN.1 構文を使用して説明されています。これらのセキュリティー標準を使用するために ASN.1 構文の詳細な知識は必要ありませんが、ASN.1 はほとんどのセキュリティー関連データ型の基本的な定義に使用される点に留意する必要があります。

BER

OSI の Basic Encoding Rules (BER) は、ASN.1 データ型を octets (バイナリー表現) のシーケンスに変換する方法を定義します。したがって、ASN.1 に対する BER の役割は、OMGIDL に対する GIOP の役割と同じになります。

DER

OSI の識別されたエンコーディングルール (DER) は、BER に特化したものです。DER は BER に加えて、エンコードが一意となるように追加のルールで構成されます (BER エンコーディングは一意ではありません)。

参考資料

ASN.1 の詳細については、以下の標準ドキュメントを参照してください。

  • ASN.1 は X.208 で定義されています。
  • BER は X.209 で定義されています。

B.2. 識別名

概要

従来から、識別名 (DN) は、X.500 ディレクトリー構造のプライマリーキーとして定義されています。ただし、DNは、他の多くのコンテキストで汎用識別子として使用されるようになりました。Apache CXF では、DN は以下のコンテキストで発生します。

  • X.509 証明書: たとえば、証明書内の DN の 1 つが証明書 (セキュリティープリンシパル) の所有者を識別します。
  • LDAP: DN は LDAP ディレクトリーツリー内のオブジェクトの検索に使用されます。

DN の文字列表現

DN は ASN.1 で正式に定義されていますが、DN の UTF-8 文字列表現を定義する LDAP 標準もあります (RFC 2253 を参照)。文字列表現は、DN の構造を記述するための便利な基礎を提供します。

注記

DN の文字列表現は、DER でエンコードされた DN の一意の表現を 提供しません。したがって、文字列形式から DER 形式に変換される DN は、元の DER エンコーディングを常に回復するとは限りません。

DN 文字列の例

以下の文字列は、DN の一般的な例です。

C=US,O=IONA Technologies,OU=Engineering,CN=A. N. Other

DN 文字列の構造

DN 文字列は、以下の基本要素で構成されます。

OID

OBJECT IDENTIFIER (OID) は、ASN.1 の文法構造を一意に識別するバイトのシーケンスです。

属性タイプ

DN に表示される可能性のあるさまざまな属性タイプは、理論的には制限がありませんが、実際には属性タイプの小さなサブセットのみが使用されます。表B.1「一般的に使用される属性タイプ」 は、最も発生する可能性のある属性タイプのセレクションを示しています。

表B.1 一般的に使用される属性タイプ

文字列表現X.500 属性タイプデータのサイズ同等の OID

C

countryName

2

2.5.4.6

O

organizationName

1…64

2.5.4.10

OU

organizationalUnitName

1…64

2.5.4.11

CN

commonName

1…64

2.5.4.3

ST

stateOrProvinceName

1…64

2.5.4.8

L

localityName

1…64

2.5.4.7

STREET

streetAddress

  

DC

domainComponent

  

UID

userid

  

AVA

属性値のアサーション (AVA) は属性値を属性タイプに割り当てます。文字列表現では、以下の構文を使用します。

<attr-type>=<attr-value>

以下に例を示します。

CN=A. N. Other

または、同等の OID を使用して文字列表現の属性タイプを特定できます (表B.1「一般的に使用される属性タイプ」 を参照)。以下に例を示します。

2.5.4.3=A. N. Other

RDN

相対識別名 (RDN) は、DN の単一ノード (文字列表現のコンマとコンマの間に表示されるビット) を表します。技術的には RDN に複数の AVA が含まれる場合があります (正式には AVA のセットとして定義されます)。ただし、これは実際にはほとんど発生しません。文字列表現では、RDN には以下の構文があります。

<attr-type>=<attr-value>[+<attr-type>=<attr-value> ...]

(可能性としては非常に低い) 複数の値を持つ RDN の例を以下に示します。

OU=Eng1+OU=Eng2+OU=Eng3

単一値を持つ RDN の例を以下に示します。

OU=Engineering