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

CRL の次の更新値を GMT 時間で指定します。 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 とデルタ 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 を含む)
Library Certidl.lib
[DLL] Certadm.dll