ICertServerExit::GetCertificateProperty 方法 (certif.h)

GetCertificateProperty 方法从证书返回命名属性。

语法

HRESULT GetCertificateProperty(
  [in]  const BSTR strPropertyName,
  [in]  LONG       PropertyType,
  [out] VARIANT    *pvarPropertyValue
);

参数

[in] strPropertyName

指定要检索的命名属性。 有一组称为名称属性的常用证书属性,这些 属性始终有效,可以通过调用此方法进行检索。 有关这些属性的信息,请参阅 名称属性。 可检索的其他属性包括证书属性。

以下属性对证书是唯一的,可由 GetCertificateProperty 读取。

Value 含义
NotBefore
日期/时间
证书开始日期
NotAfter
日期/时间
证书过期日期
PublicKeyAlgorithm
字符串
OID) (主题键算法对象标识符
RawCertificate
二进制
原始证书字节数
RawPublicKey
二进制
主题键
RawPublicKeyAlgorithmParameters
二进制
主题键算法参数
RequestID
带符号的长
内部请求 ID
SerialNumber
字符串
证书序列号
 

只有在策略模块完成处理请求并颁发证书后, GetCertificateProperty 才能访问证书的 DistinguishedName、RawName 和 SerialNumber 属性。

以下属性适用于 证书颁发机构。 上下文必须为零才能读取这些属性中的任何一个。 最初创建 ICertServerExit 对象时,上下文设置为零。 还可以通过调用 SetContext 方法将其设置为零。

Value 含义
CAType
Long
证书颁发机构的类型。 这可以是 Certsrv.h) 中定义的以下值 (之一:

ENUM_ENTERPRISE_ROOTCA

ENUM_ENTERPRISE_SUBCA

ENUM_STANDALONE_ROOTCA

ENUM_STANDALONE_SUBCA

CertCount
Long
CA 证书数。 此值将加上 CA 续订的次数的 1。 有关续订的信息,请参阅 证书颁发机构续订
CertState
Long
CA 证书 状态。 这可以是以下值之一:
CA_DISP_ERROR:从未颁发过 CA 证书。
CA_DISP_REVOKED:CA 证书已被吊销。
CA_DISP_VALID:CA 证书仍然有效。
CA_DISP_INVALID:CA 证书已过期。
此属性名称可以追加“.#”,其中 # 表示 CA 证书索引 (,或者,对于 CRLSuffix 属性,CRL 索引) 。 有关证书和 CRL 索引的信息,请参阅 证书颁发机构续订
CertSuffix
字符串
CA 证书的后缀。 后缀是索引为零的 CA 证书的空字符串;否则,后缀以“ (nn) ”的形式 (,其中 nn 是证书索引,) 应用于指向文件或目录服务对象中存储的 CA 证书的所有 URL。 对于非 LDAP URL,后缀通常显示在“.crt”文本之前。 对于 LDAP URL,后缀通常追加到完整可分辨名称中的第一个“CN=”。

此属性名称可以追加“.#”,其中 # 表示 CA 证书索引 (,或者,对于 CRLSuffix 属性,CRL 索引) 。 有关证书和 CRL 索引的信息,请参阅 证书颁发机构续订

CRLIndex
Long
证书吊销列表 (CRL) 索引。 将证书索引追加到此属性名称后,可以检索 CRL 索引。 CRL 索引不一定与证书索引匹配。 有关详细信息,请参阅 认证

此属性名称可以追加“.#”,其中 # 表示 CA 证书索引 (,或者,对于 CRLSuffix 属性,CRL 索引) 。 有关证书和 CRL 索引的信息,请参阅 证书颁发机构续订

CRLState
Long
CRL 状态。 这可以是以下值之一:
CA_DISP_ERROR:CRL 由另一个 CA 证书管理。
CA_DISP_REVOKED:已吊销使用此 CA 证书的 CRL 的所有未过期 CA 证书。
CA_DISP_VALID:仍使用 CA 证书根据需要发布 CRL。
CA_DISP_INVALID:使用此 CA 证书的 CRL 的所有 CA 证书都已过期。
此属性名称可以追加“.#”,其中 # 表示 CA 证书索引 (,或者,对于 CRLSuffix 属性,CRL 索引) 。 有关证书和 CRL 索引的信息,请参阅 证书颁发机构续订
CRLSuffix
字符串
CA CRL 的后缀。 后缀是索引为零的 CRL 的空字符串;否则,后缀以“ (nn) ”的形式 (,其中 nn 是 CRL 索引,) 应用于指向文件或目录服务对象中存储的 CRL 的所有 URL。 对于非 LDAP URL,后缀通常显示在“.crl”文本之前。 对于 LDAP URL,后缀通常追加到完整可分辨名称中的第一个“CN=”。

此属性名称可以追加“.#”,其中 # 表示 CA 证书索引 (,或者,对于 CRLSuffix 属性,CRL 索引) 。 有关证书和 CRL 索引的信息,请参阅 证书颁发机构续订

fUseDS
Long
指示 CA 是否使用目录服务。 这可以是以下值之一:
  • 0=否
  • 1 =是
MachineDNSName
字符串
托管 CA 的服务器 DNS 名称。
ModuleRegistryLocation
字符串
可供模块使用的注册表位置。
RawCACertificate
二进制
CA 证书。

此属性名称可以追加“.#”,其中 # 表示 CA 证书索引 (,或者,对于 CRLSuffix 属性,CRL 索引) 。 有关证书和 CRL 索引的信息,请参阅 证书颁发机构续订

RawCRL
二进制
CA 的 证书吊销列表 (CRL) 。

此属性名称可以追加“.#”,其中 # 表示 CA 证书索引 (,或者,对于 CRLSuffix 属性,CRL 索引) 。 有关证书和 CRL 索引的信息,请参阅 证书颁发机构续订

RequesterCAAccess
Long
指示请求者是否有权请求证书。 这可以是以下值之一:
  • 0=否
  • 1 =是
(证书颁发机构 MMC 管理单元可用于控制 证书请求 权限。)
SanitizedCAName
字符串
CA 的已清理名称。 有关已清理的 CA 名称的信息,请参阅 ICertConfig::GetConfig
SanitizedShortName
字符串
CA 的清理名称 ,缩短并包含 哈希 值,以确保唯一性。

[in] PropertyType

指定属性类型。 类型可以是以下类型之一。

Value 含义
PROPTYPE_LONG
有符号的长数据
PROPTYPE_DATE
日期/时间
PROPTYPE_BINARY
Binary data
PROPTYPE_STRING
Unicode 字符串数据

[out] pvarPropertyValue

指向将包含属性值的 VARIANT 的指针。 返回的值编码为 BSTR。 使用 SysStringByteLen 函数检索 BSTR 的长度。 二进制 BLOB 存储为可辨别编码规则编码的 X.509 证书。

返回值

C++

如果方法成功,该方法将返回S_OK。

如果方法失败,它将返回一个 指示错误的 HRESULT 值。 有关常见错误代码的列表,请参阅 通用 HRESULT 值

VB

返回值是请求的属性值。

注解

在使用此方法之前,必须调用 ICertServerExit::SetContext

示例

BSTR    bstrPropName = NULL;
VARIANT varProp;

VariantInit(&varProp);

// Set the property name to RequestID.
bstrPropName = SysAllocString(L"RequestID");

// Retrieve the certificate property.
// pCertServerExit has been used to call SetContext previously.
hr = pCertServerExit->GetCertificateProperty(bstrPropName,
                                             PROPTYPE_LONG,
                                             &varProp );
if (FAILED(hr))
{
    printf("Failed GetCertificateProperty [%x]\n", hr);
    goto error;
}
else
{
    // Successfully retrieved property; use varProp as needed.
    // ...
}

// Done processing.
if (NULL != bstrPropName)
    SysFreeString(bstrPropName);
VariantClear(&varProp);

要求

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

另请参阅

ICertServerExit

ICertServerExit::SetContext

名称属性