ICertServerPolicy::GetCertificateProperty 方法 (certif.h)

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

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

语法

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

参数

[in] strPropertyName

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

只有在策略模块处理完请求并颁发证书后, ICertServerExit::GetCertificateProperty 才能访问证书的 DistinguishedName 和 RawName 属性。 退出模块也可以使用 ICertServerExit::GetCertificateProperty 读取颁发的证书的 DistinguishedName 和 RawName 属性。

GetCertificateProperty 无法访问其他证书属性。 在策略模块返回VR_INSTANT_OK并颁发证书之前,不会设置这些属性。 有关已颁发证书中所有属性的完整列表,请参阅 GetCertificateProperty

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

Certificate 属性 含义
RequestID
带符号的长
内部请求 ID
NotBefore
日期/时间
证书开始日期
NotAfter
日期/时间
证书过期日期
RawPublicKey
二进制
主题键
PublicKeyAlgorithm
字符串
主题键算法 对象 ID (OID)
RawPublicKeyAlgorithmParameters
二进制
主题键算法参数
GeneralFlags
PROPTYPE_LONG
注册请求中的 GeneralFlags。 这是值的按位 OR 。 唯一感兴趣的值应该是 0x00000400 的标志值,该值告知 CA 不要将请求保留在数据库中。 如果 CA 处于无数据库模式 (即,对于 Windows Server 2008 R2 及更高版本的 CA,CA 的数据库) 设置了 DBFLAGS_ENABLEVOLATILEREQUESTS 标志,请使用 certutil -getreg DbFlagscertutil -setreg DBFlags 在无数据库模式下配置 CA。

Windows Vista 和 Windows Storage Server 2003: 不支持此字段。

RequesterNameFromOldCertificate
PROPTYPE_STRING
对于续订请求,返回请求者帐户名称 (例如 contoso\requester) 。
 

以下属性适用于 证书颁发机构

CA 属性 含义
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

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

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

[out] pvarPropertyValue

指向 VARIANT 的指针,该指针将包含属性值。

返回值

如果方法成功,该方法将返回S_OK,并且 *pvarPropertyValue 设置为包含请求的属性值的 VARIANT

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

要求

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

另请参阅

ICertServerPolicy

ICertServerPolicy::SetContext

名称属性