ICertAdmin2::GetCAProperty 方法 (certadm.h)

GetCAProperty 方法检索证书颁发机构 (CA) 的属性值。 此方法首先在 ICertAdmin 接口中定义。

语法

HRESULT GetCAProperty(
  [in]  const BSTR strConfig,
  [in]  LONG       PropId,
  [in]  LONG       PropIndex,
  [in]  LONG       PropType,
  [in]  LONG       Flags,
  [out] VARIANT    *pvarPropertyValue
);

参数

[in] strConfig

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

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

[in] PropId

指定以下属性标识符之一。

含义
CR_PROP_ADVANCEDSERVER
属性的数据类型:Long

指定 CA 是否正在运行高级服务器。

CR_PROP_BASECRL
属性的数据类型:二进制,已编制索引

CA 的完整 或基本证书吊销列表 (CRL) 。

CR_PROP_BASECRLPUBLISHSTATUS
属性的数据类型:Long,已编制索引

基本 CRL 发布状态。 有关更多详细信息,请参阅“备注”。

CR_PROP_CABACKWARDCROSSCERT
属性的数据类型:二进制,已编制索引

向后交叉证书。 向后交叉证书是从 CA 续订时颁发的证书,该证书本身使用 CA 的新密钥签名。 向后交叉证书具有新 CA 证书的颁发机构密钥标识符和旧 CA 证书的使用者密钥标识符。

仅适用于根 CA。

CR_PROP_CABACKWARDCROSSCERTSTATE
属性的数据类型:Long,已编制索引

向后交叉证书是否有效。 仅适用于根 CA。

CR_PROP_CACERTSTATE
属性的数据类型:Long

CA 证书的状态。 值可以是:

  • CA_DISP_REVOKED
  • CA_DISP_VALID
  • CA_DISP_INVALID
CR_PROP_CACERTSTATUSCODE
属性的数据类型:Long,已编制索引

CA 证书的状态,作为 HRESULT

CR_PROP_CACERTVERSION
属性的数据类型:Long,已编制索引

CA 证书的版本,作为 DWORD。 高阶字是键索引,低序字是 CA 证书索引。

CR_PROP_CAFORWARDCROSSCERT
属性的数据类型:二进制,已编制索引

向前交叉证书。 转发交叉证书是从 CA 续订到使用 CA 的上一个密钥签名的自身时颁发的证书。 转发交叉证书具有上一个 CA 证书的颁发机构密钥标识符和新 CA 证书的使用者密钥标识符。

仅适用于根 CA。

CR_PROP_CAFORWARDCROSSCERTSTATE
属性的数据类型:Long,已编制索引

转发交叉证书是否有效。 仅适用于根 CA。

CR_PROP_CANAME
属性的数据类型:String

CA 的名称。

CR_PROP_CASIGCERT
属性的数据类型:二进制,已编制索引

CA 签名证书。

CR_PROP_CASIGCERTCHAIN
属性的数据类型:二进制,已编制索引

CA 签名证书链。

CR_PROP_CASIGCERTCOUNT
属性的数据类型:Long

CA 的签名证书数。

CR_PROP_CASIGCERTCRLCHAIN
属性的数据类型:二进制,已编制索引

CA 的签名证书 CRL 链。

CR_PROP_CATYPE
属性的数据类型:Long

CA 的类型。 这可以是 Certsrv.h) 中定义的以下值 (之一:

  • ENUM_ENTERPRISE_ROOTCA
  • ENUM_ENTERPRISE_SUBCA
  • ENUM_STANDALONE_ROOTCA
  • ENUM_STANDALONE_SUBCA
CR_PROP_CAXCHGCERT
属性的数据类型:二进制,已编制索引

CA 交换证书。

CR_PROP_CAXCHGCERTCHAIN
属性的数据类型:二进制,已编制索引

CA 交换证书链。

CR_PROP_CAXCHGCERTCOUNT
属性的数据类型:Long

CA 的交换证书数。

CR_PROP_CAXCHGCERTCRLCHAIN
属性的数据类型:二进制,已编制索引

CA 的交换证书 CRL 链。

CR_PROP_CERTAIAURLS
属性的数据类型:字符串,已编制索引

将颁发机构信息访问 URL 指定为客户端请求的 URL 类型。

Windows Server 2003: 不支持此标志。

CR_PROP_CERTCDPURLS
属性的数据类型:字符串,已编制索引

将 CRL 分发点 URL 指定为客户端请求的 URL 类型。

Windows Server 2003: 不支持此标志。

CR_PROP_CRLSTATE
属性的数据类型:Long

CA 的 CRL 的状态。 值可以是:

  • CA_DISP_REVOKED
  • CA_DISP_VALID
  • CA_DISP_INVALID
  • CA_DISP_ERROR
CR_PROP_DELTACRL
属性的数据类型:二进制,已编制索引

CA 的增量 CRL。

CR_PROP_DELTACRLPUBLISHSTATUS
属性的数据类型:Long,已编制索引

增量 CRL 发布状态。 有关更多详细信息,请参阅“备注”。

CR_PROP_DNSNAME
属性的数据类型:String

CA 的 DNS 名称。

CR_PROP_EXITCOUNT
属性的数据类型:Long

CA 使用的退出模块数。

CR_PROP_EXITDESCRIPTION
属性的数据类型:String

退出模块的说明。

CR_PROP_FILEVERSION
属性的数据类型:String

证书服务文件版本。

CR_PROP_KRACERT
属性的数据类型:二进制,已编制索引

CA 的密钥恢复代理 (KRA) 证书。

CR_PROP_KRACERTCOUNT
属性的数据类型:Long

CA 的 KRA 证书数。

CR_PROP_KRACERTSTATE
属性的数据类型:Long,已编制索引

KRA 的证书状态。 返回值为下列之一:

  • KRA_DISP_EXPIRED
  • KRA_DISP_NOTFOUND
  • KRA_DISP_REVOKED
  • KRA_DISP_VALID
  • KRA_DISP_UNTRUSTED
  • KRA_DISP_NOTLOADED
  • KRA_DISP_INVALID
CR_PROP_KRACERTUSEDCOUNT
属性的数据类型:Long

CA 使用的 KRA 证书数。

CR_PROP_PARENTCA
属性的数据类型:String

CA 的父 CA 的名称。

CR_PROP_POLICYDESCRIPTION
属性的数据类型:String

策略模块的说明。

CR_PROP_PRODUCTVERSION
属性的数据类型:String

文件随附的产品版本。

CR_PROP_ROLESEPARATIONENABLED
属性的数据类型:Long

指定是否启用角色分离的值。

CR_PROP_SANITIZEDCANAME
属性的数据类型:String

CA 的净化名称。 有关已清理的 CA 名称的定义,请参阅 ICertConfig2::GetConfig

CR_PROP_SANITIZEDCASHORTNAME
属性的数据类型:String

CA 的净化短名称。 有关已清理的 CA 短名称的定义,请参阅 ICertConfig2::GetConfig

CR_PROP_SHAREDFOLDER
属性的数据类型:String

共享文件夹目录的名称。

CR_PROP_TEMPLATES
属性的数据类型:String

CA 支持的模板列表。

[in] PropIndex

如果 为 PropId 参数编制索引,则为检索属性值时要使用的从零开始的索引。 如果未为 PropId 编制索引,则忽略此值。

[in] PropType

指定属性的类型,在 PropId 表的“含义”列中指示。 类型可以是以下类型之一。

含义
PROPTYPE_LONG
有符号的长数据
PROPTYPE_DATE
保留 (供将来使用的日期/时间)
PROPTYPE_BINARY
Binary data
PROPTYPE_STRING
Unicode 字符串数据

[in] Flags

以下标志可用于指定返回的属性值的格式:这些标志仅对二进制数据 ((如证书、证书链或 证书吊销列表 )) 有意义,否则将被忽略。

含义
CV_OUT_BASE64
不带 BEGIN/END 的 BASE64
CV_OUT_BASE64HEADER
具有 BEGIN 证书和 END CERTIFICATE 的 BASE64
CV_OUT_BASE64REQUESTHEADER
具有 BEGIN 新证书请求和结束新证书请求的 BASE64
CV_OUT_BASE64X509CRLHEADER
BASE64 与 BEGIN X509 CRL 和 END X509 CRL
CV_OUT_BINARY
二进制
CV_OUT_HEX
十六进制字符串
CV_OUT_HEXADDR
带地址/偏移量的十六进制字符串
CV_OUT_HEXASCII
带有 ASCII 的十六进制字符串
CV_OUT_HEXASCIIADDR
具有 ASCII 和地址/偏移量的十六进制字符串

[out] pvarPropertyValue

指向接收请求的属性值的缓冲区的指针。 调用方负责通过调用 VariantClear 释放此资源。

返回值

C++

返回值为 HRESULT。 值 S_OK 表示该方法成功。

VB

请求的属性值。

注解

当属性标识符CR_PROP_BASECRLPUBLISHSTATUS或CR_PROP_DELTACRLPUBLISHSTATUS时,将返回以下值。 这些值可以组合使用。

说明
CPF_BADURL_ERROR URL 无效。
CPF_BASE 已发布基本 CRL。
CPF_CASTORE_ERROR CA 存储错误阻止发布。
CPF_COMPLETE 已发布完整的 CRL。
CPF_DELTA 已发布增量 CRL。
CPF_FILE_ERROR 文件错误阻止发布。
CPF_FTP_ERROR FTP 错误阻止发布。
CPF_HTTP_ERROR HTTP 错误阻止发布。
CPF_LDAP_ERROR LDAP 错误阻止发布。
CPF_MANUAL 已手动发布 CRL。
CPF_SHADOW 已发布空增量 CRL,以及新的 BASE CRL。
CPF_SIGNATURE_ERROR 签名错误阻止发布。
 

有关检索 CRL 的示例,请参阅 检索证书吊销列表

示例

以下示例演示如何检索 CA 的签名证书。 该示例假定 ICertAdmin2 接口指针有效。

BSTR bstrCA = NULL;
VARIANT var1;
HRESULT hr;

bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
if (NULL == bstrCA)
{
    printf("Failed to allocate memory for bstrCA\n");
    exit(1);
}

VariantInit(&var1);
// Retrieve the CA signature certificate at index 0.
hr = pAdmin2->GetCAProperty(bstrCA,
                                CR_PROP_CASIGCERT,
                                0,
                                PROPTYPE_BINARY,
                                CV_OUT_BASE64HEADER,
                                &var1);
if (FAILED(hr))
{
    printf("Failed GetCAProperty\n");
    SysFreeString(bstrCA);
    exit(1);  // Or other error action.
}

// Use the property as needed.
// ...

// Clear the variant when finished.
VariantClear(&var1);
SysFreeString(bstrCA);

要求

要求
最低受支持的客户端 无受支持的版本
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 certadm.h (包括 Certsrv.h)
Library Certidl.lib
DLL Certadm.dll