自定义证书服务 Web 注册页

证书服务 提供可用于请求证书的 Web 注册页。 管理员可以自定义可在 Web 注册页中查看的某些项;但是,在进行任何更改之前,应熟悉 Web 注册页和 Web 脚本。 有关 Web 脚本的详细信息,请参阅 脚本

“组织”、“组织单位”、“地区”、“州/县”和“国家/地区”的“可分辨名称”字段的默认值是在安装证书服务时为 证书颁发机构 指定的值 (CA) 。 这些默认值显示在网页中,用户可以在证书注册过程中进行更改。 但是,如果希望网页中显示其他默认值,可以编辑路径 \WindowsDirectory\System32\Certsrv\) ; 中的 Certdat.inc 文件 (;具体而言,可以将自定义值分配给为自定义提供的以下变量。

变量 说明
sDefaultCompany 默认公司 (在 证书请求 中显示为 “X.509 组织”字段) 。
sDefaultOrgUnit 默认部门 (在证书请求中显示为 X.509 组织单位字段) 。
sDefaultLocality 默认城市 (在证书请求中显示为“X.509 位置”字段) 。
sDefaultState 默认省/自治区/直辖市 (在证书请求中显示为 X.509 State 字段) 。
sDefaultCountry 默认国家/地区 (在证书请求中显示为 X.509 国家/地区字段) 。
nPendingTimeoutDays 用户可在请求挂起的证书后检索该证书的天数。

 

不应在 Certdat.inc 文件中更改任何其他变量。

以下示例将默认组织单位设置为“Marketing”。

sDefaultOrgUnit="Marketing"

此外,还可以编辑 Certrqtp.inc 文件,以添加、更改或删除用户可用的 证书模板 或类型。 这些模板和类型以及相关信息包含在名为 rgAvailReqTypes (m,5) 的维度数组中。

与所有 Visual Basic Scripting Edition 数组一样,此数组从零开始,因此,数组的第一个维度 mm+1 项分配内存。 因此,如果在自定义网页时需要修改 rgAvailReqTypes 数组中的项数,请将 m 维度设置为比所需项总数少一个。 例如,如果有七个证书模板,请更改 rgAvailReqTypes 的声明,如以下示例所示。

Dim rgAvailReqTypes(6,5)

数组的第二个维度(始终具有值 5)分配构成每个项的六个字段。 这六个字段表示证书模板或类型、与此模板或类型关联的显示名称,以及模板是否需要 安全/多用途 Internet 邮件扩展 (S/MIME) 。

为了便于理解要访问的字段,Certrqtp.inc 还提供了设置字段值时可以使用的以下常量。

返回的常量 说明
FIELD_OID (适用于项的第一个字段的独立 CA) 索引;表示证书类型的 对象标识符 (OID) 。
FIELD_TEMPLATE (适用于企业 CA) 项的第一个字段的索引;表示证书模板。
FIELD_FRIENDLYNAME 项的第二个字段的索引;表示用户在注册第一个字段中的项) 时将看到的显示名称 (。
FIELD_CSPLIST 项的第三个字段的索引。 模板允许的 加密服务提供程序 名称的列表。 列表中的每个名称都用问号 () 分隔。
FIELD_CSPLIST2 项的第四个字段的索引。 模板允许的 加密服务提供程序 名称的辅助列表。 列表中的每个名称都用问号 () 分隔。 此列表提供不同的默认值。
FIELD_EXPORTABLE 项的第五个字段的索引。 指示模板是否指定密钥应可导出。 如果此字段包含“True”,则密钥可导出。 如果此字段包含“False”,则密钥不可导出。
FIELD_NEEDS_SMIME_CAPABILITIES 不支持此常量。

 

例如,以下表达式将 OID 1.3.6.1.5.5.7.3.2 分配给第一项的第一个字段,并将“Web 浏览器证书”分配给第一项的第二个字段, (数组值零索引第一项) 。

rgAvailReqTypes(0, FIELD_OID) = "1.3.6.1.5.5.7.3.2"
rgAvailReqTypes(0, FIELD_FRIENDLYNAME) = "Web Browser Certificate"

这些分配的结果是,用户在注册时将看到文本 “Web 浏览器证书 ”,如果用户选择 “Web 浏览器证书”则证书请求 将包含 OID 1.3.6.1.5.5.7.3.2。

Certrqtp.inc 文件还包含用于证书模板或类型的显示名称的常量。 以下示例显示了 格式。

' Strings for localization.
Const L_WebBrowserCert_Text="Web Browser Certificate"
Const L_EmailProtectionCert_Text="E-Mail Protection Certificate"
Const L_UserTemplateCert_Text="User Certificate"

这些常量在 Certrqtp.inc 文件的 块中定义,通过此分组可以更轻松地为每个常量分配一个自定义值。 这在本地化网页国际版本的显示名称时特别有用。

最后,Certrqtp.inc 文件包含一个变量,该变量表示 rgAvailReqTypes 数组中的证书模板或类型数。 与数组的 m 维度相反,请将 nAvailReqTypes 变量的值设置为安装将使用的证书模板或类型的实际数量;此值不能大于 m+1。 尽管在 Certrqtp.inc 文件的顶部附近声明,但在填充 rgAvailReqTypes 数组后,nAvailReqTypes 会分配一个值,以便更轻松地查看数组实际使用的元素数。 nAvailReqTypes 值用于 Web 注册页中的其他位置的迭代,因此,此变量必须准确反映用户可查看的证书模板或类型的数量。

请注意,仅将 证书模板 和类型添加到 Certrqtp.inc 文件并不能保证用户能够获取具有这些特征的证书;CA 必须获得授权才能为指定的证书模板或类型颁发证书。

安装可以创建自己的应用程序或网页来请求和接收证书。 ICEnroll4ICertRequest2 对象允许程序员或脚本编写人员生成证书请求应用程序。

若要请求在智能卡上颁发证书,可以使用智能卡注册控制。 有关详细信息和示例代码,请参阅 ISCrdEnr