확장 처리기
X.509 인증서 형식 버전 3부터 인증서에는 인증서 확장이 포함될 수 있습니다. (X.509 인증서의 내용은 인증서 속성을 참조하세요.) 이러한 확장은 추가 정보를 나타냅니다. 예를 들어 확장은 추가 주체 식별 정보를 나타내거나 키를 사용할 수 있는 작업(예: 서명 또는 암호화)을 지정하는 키 사용 정보를 나타낼 수 있습니다. 표준 확장 집합은 애플리케이션 사용을 위해 정의되며 확장을 사용자 지정할 수도 있습니다.
각 확장에는 추가 정보의 형식과 이 정보가 포함된 데이터 구조를 식별하는 연결된 개체 식별자 문자열이 있습니다. 예를 들어 키 사용 개체 식별자는 키 사용 정보를 나타내는 "2.5.29.15"입니다. 연결된 데이터 구조는 키를 사용하는 방법을 지정하는 CRYPT_BIT_BLOB (비트 필드)입니다.
인증서를 발급하기 전에 인증서에 확장을 추가할 수 있습니다. 인증서가 발급되면 활성화된 모든 확장이 인증서의 일부입니다. 확장이 중요로 표시된 경우 애플리케이션을 사용하여 확장을 알고 있어야 하며 애플리케이션은 확장의 의도 또는 값을 준수해야 합니다. Certificate Services를 사용하면 ICertAdmin 및 ICertServerPolicy에서 제공하는 메서드를 통해 발급되지 않은 인증서에서 확장을 설정할 수 있습니다. 인증서 확장에 대한 자세한 내용은 CryptoAPI 설명서의 CERT_EXTENSION 참조하세요. 일반적인 인증서 확장 데이터 구조에 대한 자세한 내용은 X.509 인증서 확장 구조를 참조하세요.
확장 처리기는 더 복잡하지만 일반적으로 사용되는 확장 및 데이터 형식(예: IA5String 또는 PrintableString)을 인코딩하기 위한 루틴을 제공하는 COM 개체입니다.
데이터 형식이 DATE, LONG 및 BSTR인 확장에는 확장 처리기가 필요하지 않습니다. 정책 모듈은 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 메서드를 호출하여 인증서의 확장을 설정할 수 있습니다.
자세한 내용은 사용자 지정 확장 처리기 작성을 참조하세요.