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

表示 CA 的有效配置字符串,格式为 COMPUTERNAME\CANAME,其中 COMPUTERNAME 是证书服务服务器的网络名称,CANAME 是证书颁发机构的公用名称,如证书服务设置期间输入。 有关配置字符串名称的信息,请参阅 ICertConfig

重要提示 更改配置字符串时,PublishCRL 不会清除内部缓存。 更改 CA 的配置字符串时,必须实例化新的 ICertAdmin 对象,并使用新的配置字符串再次调用此方法。
 

[in] Date

指定 CRL 的下一个更新值(以 GMT 为单位)。 如果 Date 为非零值,则 CRL 的下一个更新值为 Date,具体取决于 证书服务强制执行的舍入或上限限制。 如果 Date 为零,则从默认 CRL 发布周期计算 CRL 的下一个更新值。

[in] CRLFlags

指定 CRL 发布选项的值。 此值可以是以下标志的按位组合。

含义
CA_CRL_BASE
发布基本 CRL,或者如果设置了CA_CRL_REPUBLISH,则重新发布最新的基本 CRL。
CA_CRL_DELTA
如果设置了CA_CRL_REPUBLISH,则会发布增量 CRL,或者重新发布最新的增量 CRL。 请注意,如果 CA 尚未启用增量 CRL 发布,则使用此标志将导致错误。
CA_CRL_REPUBLISH
重新发布由 CA_CRL_BASE 或 CA_CRL_DELTA 指定的最新基 CRL 或增量 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