다음을 통해 공유


확장 처리기

X.509 인증서 형식 버전 3부터 인증서에는 인증서 확장이 포함될 수 있습니다. (X.509 인증서의 내용은 인증서 속성을 참조하세요.) 이러한 확장은 추가 정보를 나타냅니다. 예를 들어 확장은 추가 주체 식별 정보를 나타내거나 키를 사용할 수 있는 작업(예: 서명 또는 암호화)을 지정하는 키 사용 정보를 나타낼 수 있습니다. 표준 확장 집합은 애플리케이션 사용을 위해 정의되며 확장을 사용자 지정할 수도 있습니다.

각 확장에는 추가 정보의 형식과 이 정보가 포함된 데이터 구조를 식별하는 연결된 개체 식별자 문자열이 있습니다. 예를 들어 키 사용 개체 식별자는 키 사용 정보를 나타내는 "2.5.29.15"입니다. 연결된 데이터 구조는 키를 사용하는 방법을 지정하는 CRYPT_BIT_BLOB (비트 필드)입니다.

인증서를 발급하기 전에 인증서에 확장을 추가할 수 있습니다. 인증서가 발급되면 활성화된 모든 확장이 인증서의 일부입니다. 확장이 중요로 표시된 경우 애플리케이션을 사용하여 확장을 알고 있어야 하며 애플리케이션은 확장의 의도 또는 값을 준수해야 합니다. Certificate Services를 사용하면 ICertAdminICertServerPolicy에서 제공하는 메서드를 통해 발급되지 않은 인증서에서 확장을 설정할 수 있습니다. 인증서 확장에 대한 자세한 내용은 CryptoAPI 설명서의 CERT_EXTENSION 참조하세요. 일반적인 인증서 확장 데이터 구조에 대한 자세한 내용은 X.509 인증서 확장 구조를 참조하세요.

확장 처리기는 더 복잡하지만 일반적으로 사용되는 확장 및 데이터 형식(예: IA5String 또는 PrintableString)을 인코딩하기 위한 루틴을 제공하는 COM 개체입니다.

데이터 형식이 DATE, LONGBSTR인 확장에는 확장 처리기가 필요하지 않습니다. 정책 모듈은 Type 매개 변수가 확장 데이터 형식을 나타내는 값(PROPTYPE_DATE, PROPTYPE_LONG 또는 PROPTYPE_STRING)으로 설정된 ICertServerPolicy::SetCertificateExtension을 호출하기만 하면 됩니다. 그런 다음, 확장을 서버 엔진에 전달합니다. 서버 엔진은 인증서에 확장을 저장하기 전에 ASN.1( Abstract Syntax Notation One ) 인코딩을 수행합니다.

그러나 이러한 기본 형식 이외의 데이터 형식이 있는 확장은 정책 모듈이 서버 엔진에 전달하기 전에 확장 처리기에 의해 ASN.1로 인코딩되어야 합니다. 정책 모듈 이 ICertServerPolicy::SetCertificateExtension 을 호출하여 ASN.1로 인코딩된 확장을 서버 엔진에 전달하는 경우 Type 매개 변수를 PROPTYPE_BINARY 설정해야 합니다. 그런 다음 서버 엔진은 이 인코딩된 확장을 인증서에 저장합니다.

기본 확장 처리기인 Certenc.dll 여러 ICertEncodeXXX 인터페이스를 내보내고 정책 모듈에서 호출할 수 있습니다. 필요한 형식 정보는 SDK(플랫폼 소프트웨어 개발 키트)에 제공되는 Certencl.dll 포함되어 있습니다. 각 인터페이스는 ASN.1로 인 코딩 된 인증서 확장을 정책 모듈에 이진 형식으로 반환하는 인코딩 메서드를 제공합니다. 그런 다음, 정책 모듈은 ICertServerPolicy::SetCertificateExtension 메서드를 호출하여 인증서의 확장을 설정할 수 있습니다.

자세한 내용은 사용자 지정 확장 처리기 작성을 참조하세요.