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 属性 | 含义 |
---|---|
|
内部请求 ID |
|
证书开始日期 |
|
证书过期日期 |
|
主题键 |
|
主题键算法 对象 ID (OID) |
|
主题键算法参数 |
|
注册请求中的 GeneralFlags。 这是值的按位 OR 。 唯一感兴趣的值应该是 0x00000400 的标志值,该值告知 CA 不要将请求保留在数据库中。 如果 CA 处于无数据库模式 (即,对于 Windows Server 2008 R2 及更高版本的 CA,CA 的数据库) 设置了 DBFLAGS_ENABLEVOLATILEREQUESTS 标志,请使用 certutil -getreg DbFlags 和 certutil -setreg DBFlags 在无数据库模式下配置 CA。
Windows Vista 和 Windows Storage Server 2003: 不支持此字段。 |
|
对于续订请求,返回请求者帐户名称 (例如 contoso\requester) 。 |
以下属性适用于 证书颁发机构。
CA 属性 | 含义 |
---|---|
|
证书颁发机构的类型。 这可以是 Certsrv.h) 中定义的以下值 (之一:
|
|
CA 证书的数量。 此值将加上 CA 续订的次数的 1。 有关续订的信息,请参阅 认证。 |
|
CA 证书 状态。 这可以是以下值之一:
|
|
CA 证书的后缀。 后缀是索引为零的 CA 证书的空字符串;否则,后缀以“ (nn) ”的形式 (,其中 nn 是证书索引,) 应用于指向文件或目录服务对象中存储的 CA 证书的所有 URL。 对于非 LDAP URL,后缀通常显示在“.crt”文本之前。 对于 LDAP URL,后缀通常追加到完整可分辨名称中的第一个“CN=”。
此属性名称可以追加“.#”,其中 # 表示 CA 证书索引 (,或者,对于 CRLSuffix 属性,CRL 索引) 。 有关证书和 CRL 索引的信息,请参阅 证书颁发机构续订。 |
|
证书吊销列表 (CRL) 索引。 将证书索引追加到此属性名称后,可以检索 CRL 索引。 CRL 索引不一定与证书索引匹配。 有关详细信息,请参阅 认证。
此属性名称可以追加“.#”,其中 # 表示 CA 证书索引 (,或者,对于 CRLSuffix 属性,CRL 索引) 。 有关证书和 CRL 索引的信息,请参阅 证书颁发机构续订。 |
|
CRL 状态。 这可以是以下值之一:
|
|
CA CRL 的后缀。 后缀是索引为零的 CRL 的空字符串;否则,后缀以“ (nn) ”的形式 (,其中 nn 是 CRL 索引,) 应用于指向文件或目录服务对象中存储的 CRL 的所有 URL。 对于非 LDAP URL,后缀通常显示在 .crl 文本之前。 对于 LDAP URL,后缀通常追加到完整可分辨名称中的第一个“CN=”。
此属性名称可以追加“.#”,其中 # 表示 CA 证书索引 (,或者,对于 CRLSuffix 属性,CRL 索引) 。 有关证书和 CRL 索引的信息,请参阅 证书颁发机构续订。 |
|
指示 CA 是否使用目录服务。 这可以是以下值之一:
|
|
托管 CA 的服务器的 DNS 名称。 |
|
可供模块使用的注册表位置。 |
|
CA 证书。
此属性名称可以追加“.#”,其中 # 表示 CA 证书索引 (,或者,对于 CRLSuffix 属性,CRL 索引) 。 有关证书和 CRL 索引的信息,请参阅 证书颁发机构续订。 |
|
证书吊销列表 (CA 的 CRL) 。
此属性名称可以追加“.#”,其中 # 表示 CA 证书索引 (,或者,对于 CRLSuffix 属性,CRL 索引) 。 有关证书和 CRL 索引的信息,请参阅 证书颁发机构续订。 |
|
指示请求者是否有权请求证书。 这可以是以下值之一:
|
|
CA 的 净化名称 。 有关已清理的 CA 名称的信息,请参阅 ICertConfig::GetConfig。 |
|
CA 的净化名称,它被缩短,其中包含一个哈希值以确保唯一性。 |
[in] PropertyType
指定属性类型。 类型可以是以下值之一。
类型 | 含义 |
---|---|
|
有符号的长数据 |
|
日期/时间 |
|
Binary data |
|
Unicode 字符串数据 |
[out] pvarPropertyValue
指向 VARIANT 的指针,该指针将包含属性值。
返回值
如果方法成功,该方法将返回S_OK,并且 *pvarPropertyValue 设置为包含请求的属性值的 VARIANT 。
如果方法失败,它将返回一个 指示错误的 HRESULT 值。 有关常见错误代码的列表,请参阅 通用 HRESULT 值。
要求
最低受支持的客户端 | 无受支持的版本 |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | certif.h (包括 Certsrv.h) |
Library | Certidl.lib |
DLL | Certcli.dll |