X.509 인증서 형식 버전 3부터 인증서에는 인증서 확장이 포함될 수 있습니다. (X.509 인증서의 내용은 인증서 속성참조하세요.) 이러한 확장은 추가 정보를 나타냅니다. 예를 들어 확장은 추가 주체 식별 정보를 나타내거나 키를 사용할 수 있는 작업(예: 서명 또는 암호화)을 지정하는 키 사용 정보를 나타낼 수 있습니다. 표준 확장 집합은 애플리케이션 사용을 위해 정의되며 확장을 사용자 지정할 수도 있습니다.
각 확장에는 추가 정보의 형식과 이 정보가 포함된 데이터 구조를 식별하는 연결된 개체 식별자 문자열이 있습니다. 예를 들어 키 사용 개체 식별자는 키 사용 정보를 나타내는 "2.5.29.15"입니다. 연결된 데이터 구조는 키를 사용하는 방법을 지정하는 CRYPT_BIT_BLOB(비트 필드)입니다.
인증서를 발급하기 전에 인증서에 확장을 추가할 수 있습니다. 인증서가 발급되면 활성화된 모든 확장이 인증서의 일부입니다. 확장이 중요로 표시된 경우 해당 사용은 using 애플리케이션에서 알고 있어야 하며 애플리케이션은 확장의 의도 또는 값을 준수해야 합니다. 인증서 서비스를 사용하면 ICertAdmin 제공된 메서드를 통해 발급되지 않은 인증서에 확장을 설정하고 ICertServerPolicy수 있습니다. 인증서 확장에 대한 자세한 내용은 CryptoAPI 설명서의 CERT_EXTENSION 참조하세요. 일반적인 인증서 확장 데이터 구조에 대한 자세한 내용은 X.509 인증서 확장 구조참조하세요.
확장 처리기는 더 복잡하지만 일반적으로 사용되는 확장 및 데이터 형식(예: IA5String 또는 PrintableString)을 인코딩하기 위한 루틴을 제공하는 COM 개체입니다.
데이터 형식이 DATE , LONG및 BSTR확장 처리기가 필요하지 않습니다. 정책 모듈은 확장 데이터 형식(PROPTYPE_DATE, PROPTYPE_LONG 또는 PROPTYPE_STRING)을 나타내는 값으로 설정된 Type 매개 변수를 사용하여 ICertServerPolicy::SetCertificateExtension 호출합니다. 그런 다음 서버 엔진에 확장을 전달합니다. 서버 엔진은 인증서에 확장을 저장하기 전에 ASN.1(추상 구문 표기법 One) 인코딩을 수행합니다.
그러나 이러한 기본 형식 이외의 데이터 형식이 있는 확장은 정책 모듈이 서버 엔진에 전달하기 전에 확장 처리기에서 ASN.1로 인코딩해야 합니다. 정책 모듈이 ICertServerPolicy::SetCertificateExtension 호출하여 ASN.1로 인코딩된 확장을 서버 엔진에 전달하는 경우 Type 매개 변수를 PROPTYPE_BINARY 설정해야 합니다. 그런 다음 서버 엔진은 단순히 이 인코딩된 확장을 인증서에 저장합니다.
Certenc.dll기본 확장 처리기는 여러 ICertEncodeXXX 인터페이스를 내보내고 정책 모듈에서 호출할 수 있습니다. 필요한 형식 정보는 SDK(플랫폼 소프트웨어 개발 키트)에 제공되는 Certencl.dll 포함되어 있습니다. 각 인터페이스는 ASN.1로 인코딩된 인증서 확장을 정책 모듈에 이진 형식으로 반환하는 인코딩 메서드를 제공합니다. 그런 다음 정책 모듈은 ICertServerPolicy::SetCertificateExtension 메서드를 호출하여 인증서의 확장을 설정할 수 있습니다.
자세한 내용은 사용자 지정 확장 처리기 작성참조하세요.