다음을 통해 공유


인증서 저장소 상태 관리

여러 함수는 인증서 저장소 상태를 관리하기 위한 서비스를 제공합니다.

인증서에 액세스하려면 인증서가 저장된 인증서 저장소를 CertOpenStore 또는 CertOpenSystemStore 호출을 통해 열어야 합니다.

일반적으로 인증서 저장소는 캐시된 메모리에서 열립니다. 새 저장소일 수도 있고 로컬 레지스트리, 원격 컴퓨터의 레지스트리, 디스크 파일, PKCS #7 메시지 또는 기타 원본에서 해당 콘텐츠를 로드할 수 있습니다.

CryptoAPI 인증서 저장소 함수를 사용하면 저장소가 캐시된 메모리 외부에서 인증서를 유지할 수 있습니다(예: Microsoft Certificate Server 데이터베이스에서 제공하는 인증서와 같은 인증서의 외부 데이터베이스).

CertOpenStore 함수 매개 변수 중 하나인 lpszStoreProvider는 열린 저장소의 유형과 해당 저장소를 여는 데 사용되는 공급자를 결정합니다. 다양한 공급자를 사용하여 인증서 저장소를 여는 예제는 인증서 저장소 열기에 대한 예제 C 코드를 참조 하세요.

CertCloseStore 는 인증서 저장소를 닫습니다. 인증서 저장소를 닫으면 해당 저장소의 각 인증서 컨텍스트에서 참조 수가 1씩 줄어듭니다. 참조 수가 0으로 이동한 인증서의 경우 메모리가 해제됩니다.

CertCloseStore사용하여 CERT_CLOSE_STORE_FORCE_FLAG 설정하면 인증서 저장소가 닫히고 참조 수에 관계없이 모든 인증서 컨텍스트에 대한 메모리가 해제됩니다. 다중 스레드 프로그램과 같은 경우에 바람직할 수 없습니다. CERT_CLOSE_STORE_CHECK_FLAG 설정되면 저장소가 닫히지만 참조 수가 0으로 감소되지 않은 인증서에 대해 메모리가 할당된 경우 함수에서 경고 값이 반환됩니다. 인증서의 참조 수가 0보다 크면 해당 인증서 컨텍스트의 중복이 해제되지 않습니다. CertFreeCertificateContext, CertFreeCRLContextCertFreeCTLContext를 사용하여 열려 있는 인증서를 해제합니다.

참고 항목

인증서 컨텍스트는 다른 멤버 중에서 인코딩된 인증서 BLOB에 대한 포인터 및 CERT_INFO 구조에 대한 포인터가 있는 CERT_CONTEXT 형식의 구조입니다. CERT_INFO 구조에는 가장 중요한 인증서 데이터가 포함됩니다. 인증서, CRL(인증서 해지 목록) 및 CTL(인증서 신뢰 목록) 컨텍스트 구조에 대한 자세한 내용은 인증서 컨텍스트 인코딩 및 디코딩을 참조하세요.

각 인증서 컨텍스트에는 할당된 컨텍스트 주소의 복사본 수를 나타내는 참조 개수도 포함됩니다. 인증서 컨텍스트가 어떤 방식으로든 중복될 때마다 해당 참조 수가 하나씩 증가합니다. 인증서 컨텍스트에 대한 포인터가 해제될 때마다 인증서 컨텍스트의 참조 수가 1씩 감소합니다. 인증서 컨텍스트의 참조 수가 0에 도달하면 컨텍스트를 보유하는 메모리가 할당 해제됩니다. 인증서 컨텍스트에 할당된 메모리는 해당 컨텍스트가 저장소에 있고 저장소가 CERT_CLOSE_STORE_FORCE_FLAG 사용하여 닫혀 있는 경우에도 할당이 해제됩니다. 컨텍스트의 메모리가 할당 해제되고 해당 컨텍스트에 대한 포인터가 계속 사용 중인 경우 해당 포인터는 더 이상 유효하지 않습니다.

 

CertDuplicateStore 는 저장소의 참조 수를 늘림

CertSaveStore 는 저장소의 콘텐츠를 디스크 파일 또는 메모리 위치에 저장하고,

CertControlStore 는 열려 있는 동안 저장소를 관리합니다. 열려 있는 저장소가 있는 애플리케이션은 다른 프로세스에 의해 해당 저장소의 지속된 상태가 변경된 경우 알림을 받을 수 있습니다. 이 문제는 도메인 제어 컴퓨터에서 로컬 컴퓨터 저장소에 새 인증서를 복사한 경우에 발생할 수 있습니다.

변경 내용이 검색되면 캐시된 저장소는 캐시된 저장소를 저장소의 지속된 상태와 일치하도록 다시 동기화할 수 있습니다. 또한 CertControlStore 는 캐시된 저장소의 이러한 변경 내용이 자동으로 저장되지 않을 때 캐시된 저장소 변경 내용을 영구 스토리지에 복사하는 프로세스를 지원합니다.

인증서 저장소와 유사한 인증서 컨텍스트에는 확장 속성이 있을 수 있습니다. CertSetStoreProperty 는 인증서 저장소에 확장 속성을 추가합니다. CertGetStoreProperty 는 인증서 저장소에 설정된 모든 속성을 검색합니다. 현재 미리 정의된 유일한 인증서 저장소 속성은 저장소의 지역화된 이름입니다.