다음을 통해 공유


ICertAdmin2::P ublishCRLs 메서드(certadm.h)

PublishCRLs 메서드는 CA(인증 기관)에 대한 CRL(인증서 해지 목록)을 게시합니다. 이 메서드는 ICertAdmin 인터페이스에서 처음 정의되었습니다.

PublishCRLs 메서드는 갱신되어 아직 만료되지 않은 CA 인증서를 기반으로 하는 CRL뿐만 아니라 CA의 현재 인증서를 기반으로 CRL을 게시합니다.

구문

HRESULT PublishCRLs(
  [in] const BSTR strConfig,
  [in] DATE       Date,
  [in] LONG       CRLFlags
);

매개 변수

[in] strConfig

COMPUTERNAME\CANAME 형식의 CA에 대한 유효한 구성 문자열을 나타냅니다. 여기서 COMPUTERNAME은 인증서 서비스 서버의 네트워크 이름이고 CANAME는 인증서 서비스 설정 중에 입력한 인증 기관의 일반 이름입니다. 구성 문자열 이름에 대한 자세한 내용은 ICertConfig를 참조하세요.

중요PublishCRL 은 구성 문자열이 변경되면 내부 캐시를 지우지 않습니다. CA에 대한 구성 문자열을 변경하는 경우 새 ICertAdmin 개체를 인스턴스화하고 새 구성 문자열을 사용하여 이 메서드를 다시 호출해야 합니다.
 

[in] Date

GMT 시간에서 CRL의 다음 업데이트 값을 지정합니다. Date가 0이 아닌 경우 CRL의 다음 업데이트 값은 Date이며, 인증서 서비스에서 적용되는 반올림 또는 최대 제한에 따라 다릅니다. Date가 0이면 CRL의 다음 업데이트 값이 기본 CRL 게시 기간에서 계산됩니다.

[in] CRLFlags

CRL 게시 옵션을 지정하는 값입니다. 이 값은 다음 플래그의 비트 조합일 수 있습니다.

의미
CA_CRL_BASE
기본 CRL이 게시되거나 CA_CRL_REPUBLISH 설정된 경우 가장 최근의 기본 CRL이 다시 게시됩니다.
CA_CRL_DELTA
델타 CRL이 게시되거나 CA_CRL_REPUBLISH 설정된 경우 가장 최근의 델타 CRL이 다시 게시됩니다. CA에서 델타 CRL 게시를 사용하도록 설정하지 않은 경우 이 플래그를 사용하면 오류가 발생합니다.
CA_CRL_REPUBLISH
CA_CRL_BASE 또는 CA_CRL_DELTA 지정한 가장 최근의 기본 또는 델타 CRL이 다시 게시됩니다. 배포 지점의 CRL이 이미 최신 CRL인 경우 CA는 CRL 배포 지점에 CRL을 다시 게시하지 않습니다.

반환 값

없음

설명

CA가 기본 및 델타 CRL을 성공적으로 게시했는지 여부를 확인하려면 각각 CR_PROP_BASECRLPUBLISHSTATUS 및 CR_PROP_DELTACRLPUBLISHSTATUS 속성 식별자를 사용하여 ICertAdmin2::GetCAProperty 를 호출합니다.

예제

다음 예제에서는 CRL 게시를 보여줍니다.

    DATE ExpDate;  // CRL expiration date.
    SYSTEMTIME st;
    BSTR bstrCA = NULL;

    //  Set the CRL expiration date to noon, July 1, 2001.
    //  Zero out values first (avoids setting minutes,
    //  seconds, and so on).
    memset(&st, 0, sizeof(SYSTEMTIME));
    st.wYear = 2001;
    st.wMonth = 7;     // July
    st.wDay = 1;       // first day of month
    st.wHour = 12;     // noon

    //  Place the date in required format.
    if (!SystemTimeToVariantTime(&st, &ExpDate))
    {
        printf("Unable to convert time\n");
        goto error;
    }

    bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
    if (NULL == bstrCA)
    {
        printf("Memory allocation failed\n");
        goto error;
    }

    //  Publish the CRL.
    //  pCertAdmin is a previously instantiated ICertAdmin object.
    hr = pCertAdmin2->PublishCRLs(bstrCA,
                              ExpDate,
                              CA_CRL_BASE);
    if (FAILED(hr))
    {
        printf("Failed PublishCRLs [%x]\n", hr);
        goto error;
    }
    else
        printf("PublishCRLs succeeded\n");
    //  Done.

error:

    //  Free resources.
    if (bstrCA)
        SysFreeString(bstrCA);

요구 사항

요구 사항
지원되는 최소 클라이언트 지원되는 버전 없음
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 certadm.h(Certsrv.h 포함)
라이브러리 Certidl.lib
DLL Certadm.dll