基本型
証明書登録 API では、次の基本的な ASN.1 の種類がサポートされています。
BIT STRING
エンコード タグ: 0x03
Certreq.exe名: BIT_STRING
ビットまたはバイナリ文字列は、任意に長いビット配列です。 次の例のように、かっこで囲まれた整数と割り当てられた名前で特定のビットを識別できます。
Versions ::= BIT STRING{ version-1(0), version-2(1) }
証明書キーと署名は、多くの場合、ビット文字列として表されます。
---------------------------------------------------------------------
-- ASN.1 type example: BIT STRING
-- Tag number: 0x03
---------------------------------------------------------------------
SubjectPublicKeyInfo ::= SEQUENCE
{
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING
}
BOOLEAN
エンコード タグ: 0x01
Certreq.exe名: BOOLEAN
ブール型には、 TRUE または FALSE の 2 つの値のいずれかを含めることができます。 次の例は、Basic Constraints 証明書拡張機能の ASN.1 構造を示しています。 cA フィールドは、証明書のサブジェクトが証明機関 (CA) であるかどうかを指定します。 既定の重要度は FALSE です。
---------------------------------------------------------------------
-- ASN.1 type example: BOOLEAN
-- Tag number: 0x01
---------------------------------------------------------------------
BasicConstraints ::= SEQUENCE
{
cA BOOLEAN DEFAULT FALSE,
pathLenConstraint INTEGER OPTIONAL
}
INTEGER
エンコード タグ: 0x02
Certreq.exe名: INTEGER
整数には、通常、正または負の整数値を指定できます。 次の例は、RSA 公開キーの ASN.1 構造体を示しています。 publicExponent フィールドは、4,294,967,296 未満の正の整数に制限されることに注意してください。
---------------------------------------------------------------------
-- ASN.1 type example: INTEGER
-- Tag number: 0x02
---------------------------------------------------------------------
HUGEINTEGER ::= INTEGER
RSAPublicKey ::= SEQUENCE
{
modulus HUGEINTEGER,
publicExponent INTEGER (0..4294967295)
}
NULL
エンコード タグ: 0x05
Certreq.exe名: NULL
NULL 型には、1 バイトの0x00が含まれています。 証明書要求が空の値を示す必要がある任意の場所で使用できます。 たとえば、 AlgorithmIdentifier は、オブジェクト識別子 (OID) と省略可能なパラメーターを含むシーケンスです。
---------------------------------------------------------------------
-- ASN.1 type example: NULL
-- Tag number: 0x05
---------------------------------------------------------------------
AlgorithmIdentifier ::= SEQUENCE
{
algorithm OBJECT IDENTIFIER,
parameters ANY OPTIONAL
}
構造体がエンコードされるときにパラメーターがない場合は、空の値を示すために NULL が使用されます。
30 0d ; SEQUENCE (d Bytes)
| | | 06 09 ; OBJECT_ID (9 Bytes)
| | | | 2a 86 48 86 f7 0d 01 01 01
| | | | ; 1.2.840.113549.1.1.1 RSA (RSA_SIGN)
| | | 05 00 ; NULL (0 Bytes)
オブジェクト識別子
エンコード タグ: 0x06
Certreq.exe名: OBJECT_ID
証明書登録 API は、アルゴリズム識別子、属性、およびその他の PKI 要素へのユニバーサル ポインターの一種としてオブジェクト識別子 (OID) を使用します。 OID は通常、"2.16.840.1.101.3.4.1.42" などのドット付き 10 進文字列で表示されます。 ピリオドで区切られた文字列内の個々の要素は、オブジェクトとそれを登録したorganizationを一意に識別する登録機関ツリー内のアークとリーフを表します。 たとえば、 上記の OID は、joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistAlgorithms(4) aesAlgs(1) に拡張され、256 ビット AES 暗号ブロック チェーン (CBC) モード アルゴリズムを一意に識別するために追加された .42 に拡張できます。
---------------------------------------------------------------------
-- ASN.1 type example: OBJECT IDENTIFIER
-- Tag number: 0x06
---------------------------------------------------------------------
AlgorithmIdentifier ::= SEQUENCE
{
algorithm OBJECT IDENTIFIER,
parameters ANY OPTIONAL
}
OCTET STRING
エンコード タグ: 0x04
Certreq.exe名: OCTET_STRING
オクテット文字列は任意の大きなバイト配列です。 ただし、 BIT STRING 型とは異なり、文字列内の特定のビットとバイトに名前を割り当てることはできません。 オクテットという単語は、メモリ ワードを参照するプラットフォームに依存しない方法であることを意味します。 証明書登録 API のコンテキスト内では、オクテットとバイトは交換可能です。
---------------------------------------------------------------------
-- ASN.1 type example: OCTET STRING
-- Tag number: 0x04
---------------------------------------------------------------------
AuthorityKeyId ::= SEQUENCE
{
keyIdentifier [0] IMPLICIT OCTET STRING OPTIONAL,
certIssuer [1] EXPLICIT NAME
certSerialNumber [2] IMPLICIT INTEGER OPTIONAL
}
関連トピック