다음을 통해 공유


기본 형식

인증서 등록 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
} 

부울

인코딩 태그: 0x01

Certreq.exe 이름: BOOLEAN

부울 형식은 TRUE 또는 FALSE 두 값 중 하나를 포함할 수 있습니다. 다음 예제에서는 기본 제약 조건 인증서 확장에 대한 ASN.1 구조를 보여 줍니다. cA 필드는 인증서 주체가 CA(인증 기관)인지 여부를 지정합니다. 기본 중요도는 false .

---------------------------------------------------------------------
-- ASN.1 type example: BOOLEAN
-- Tag number: 0x01
---------------------------------------------------------------------
BasicConstraints ::= SEQUENCE 
{
  cA                  BOOLEAN DEFAULT FALSE,
  pathLenConstraint   INTEGER OPTIONAL
}

정수

인코딩 태그: 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) 
} 

인코딩 태그: 0x05

Certreq.exe 이름: NULL

NULL 형식에는 단일 바이트 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진수 문자열로 표시됩니다. 마침표로 구분된 문자열의 개별 요소는 개체 및 등록 조직을 고유하게 식별하는 등록 기관 트리의 호와 나뭇잎을 나타냅니다. 예를 들어 이전 OID를 joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) 256비트 AES 암호화 블록 체인(CBC) 모드 알고리즘을 고유하게 식별하기 위해 .42가 추가된 nistAlgorithms(4) aesAlgs(1).

---------------------------------------------------------------------
-- ASN.1 type example: OBJECT IDENTIFIER
-- Tag number: 0x06
---------------------------------------------------------------------
AlgorithmIdentifier ::= SEQUENCE 
{
  algorithm           OBJECT IDENTIFIER,
  parameters          ANY OPTIONAL    
}

OCTET STRING

인코딩 태그: 0x04

Certreq.exe 이름: OCTET_STRING

8진수 문자열은 임의로 큰 바이트 배열입니다. 그러나 BIT STRING 형식과 달리 문자열의 특정 비트와 바이트는 이름을 할당할 수 없습니다. 8진수라는 단어는 메모리 단어를 참조하는 플랫폼 독립적 방법을 의미합니다. 인증서 등록 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
}

ASN.1 형식 시스템

고유 인코딩 규칙

ASN.1 형식 DER 인코딩