Microsoft 证书机构 (CA) 提供了独一无二的利用 HTTP 协议和 Internet Information Services (IIS) Web 服务器以及浏览器客户端的证书注册功能。 Windows Server 2003 Web 注册使得处于无法直接访问注册机构的环境中的客户端也可以进行证书注册。 本白皮书详细介绍了分布式网络环境中的 Web 注册组件的设置、安全性配置和故障排除。
| 介绍 | |
| 设置服务器环境 | |
| 为进行委派配置“Web 注册代理” | |
| 调整代理配置 | |
| Web 注册客户端前提条件 | |
| 证书注册情景 | |
| 故障排除 | |
| 常见问题 | |
| 附录 | |
| 总结 | |
| 相关链接 |
在 Active Directory 环境中,可以使用“MMC 管理单元”或 Windows 2000 或 Windows Server 2003 CA 中的自动注册来注册证书。 第三方证书分发方法是 Web 注册,它可以在无法使用 Active Directory 时起到很好的作用。
有关 Microsoft 公钥基础结构 (PKI) 和证书服务的信息,请参见
http://www.microsoft.com/pki
使用 Web 注册进行证书注册是一个手动过程,它在注册流程方面为证书注册规划人员提供了更多的灵活性。
如果 PKI 架构师或规划人员决定实现“Web 注册支持”,他们首先需要满足以下一个或多个要求:
| • | 在客户端和 CA 间的网络连通性存在限制时为客户端提供证书。 |
| • | 在计算机是域成员或工作组成员时为客户端提供证书。 |
| • | 实现简单的或自定义的注册机构组件。 |
| • | 结合 Web 注册与现有的工作流程机制。 |
| • | 使用自我开发的组件扩展现有注册机构的功能。 |
有关如何在 Windows Server 2003 中扩展“Web 注册支持”的信息,请参见
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/security/security/customizing_the_certificate_services_web_enrollment_pages.asp
本白皮书讨论了如何在 Windows Server 环境中实现 Web 组件支持,包括 Windows 2000 Server 和 Windows Server 2003 混合部署的环境。
注意:Windows Server 2003 Web Edition 中没有启用“证书服务”或“Web 注册支持”。
本白皮书有助于系统架构师和管理员了解如何在复杂环境中实现“Web 注册支持”。 它包含有关证书申请方、Web 注册计算机之间所需的网络协议的详细信息,以及可用 CA 的详细信息。 同时提供了有关如何在 Web 注册服务器中限制委派的分步指南。 故障排除部分介绍了如何解释错误信息以及如何解决配置错误。
在本白皮书中,对 PKI 和“证书服务”结构组成部分的组件使用了一些技术术语。 为了说明这些术语,使用了以下一些规则:
| • | Web 注册页 指呈现给客户端的 Web 应用程序。 |
| • | Web 注册支持说明了通过“Web 注册页”注册证书所需的组件。 在许多情况下,“Web 注册支持”和“Web 注册页”具有相同含义。 |
| • | Web 注册代理是主持“Web 注册页”的计算机。 此计算机上没有安装 CA。 它代理从客户端向运行“证书服务”的 CA 的证书申请。 |
本部分着重讨论证书 Web 注册情景下的安装和配置。 其中提供了有关如何配置组件的分步指南。 您可以为同类 Windows 2000 环境配置“Web 注册支持”,或是部署一个混合配置。 但是,所提供的指南主要适用于同类 Windows Server 2003 部署环境。
主持“证书服务”的计算机和主持“Web 注册支持”的计算机必须是相同 Active Directory 林的成员,但可以是不同域的成员。
您可以通过 Windows Server 2003 从 Windows Server 2003 CA 来注册证书,也可以通过“Windows 2000 Web 注册代理”来注册证书。 此外,还可以通过“Windows 2000 Web 注册代理”从 Windows 2000 CA 来注册证书。 但是,不支持通过“Windows Server 2003 Web 注册代理”从 Windows 2000 CA 注册证书。 如果需要多个“Web 注册代理”,则可以实现多种组合。
| Web 注册代理 | 证书机构 | |
Windows 2000 |
| Windows 2000 |
Windows 2000 |
| Windows Server 2003 |
Windows Server 2003 |
| Windows Server 2003 |
表 1: “Web 注册支持”支持的操作系统 (OS) 组合
可以将运行“证书服务”的 CA 配置为企业或独立 CA。 但是,不能将证书“Web 注册支持”安装在安装了“Windows SharePoint 服务”的计算机上。 之所以存在此限制,是因为“Web 注册支持”使用默认的网站作为 Web 环境。 而您不能更改所使用的网站,因为它是硬编码的。
如果您使用的是“Windows 2000 Web 注册代理”,则 Web 注册功能总是限制为使用 V1 模板,即使您的 Windows Server 2003 企业 CA 中具有 V2 模板也是一样。 在“Windows 2000 高级 Web 注册页”中,V2 模板将被忽略,也不会显示。
由于“Web 注册代理”可作为普通的分布式组件对象模型 (DCOM) 客户端,因此当它连接到 CA 时,您可以根据需要配置多个“Web 注册代理”。 默认情况下,当前“Web 注册页”支持“Web 注册代理”和 CA 之间存在多对一关系。 但是,配置“Web 注册页”时不能出现同时可以访问多个 CA 的情况。 自定义“Web 注册页”可以满足这么一种特定情况。 一台计算机上只可以安装“Web 注册页”的一个实例。 您不能在 IIS 中设置多个网站,并使用该配置运行多个“Web 注册页”。
如果您有高可用性要求,则可以将“Web 注册页”安装在运行 IIS 的网络负载平衡的 Web 群集中。 由于此种类型的配置更特定于 IIS,因此本白皮书不提供任何有关此主题的特定信息。
图 1 说明了支持的示例环境,图中在 Active Directory 林中有两个 CA。 每个 CA 都连接了多个“Web 注册代理”。 这里假定所有计算机均属于相同的 Active Directory 林。
“Web 注册代理”配置可以安装在 Windows 2000 或 Windows Server 2003 Active Directory 环境中。 此外,混合模式也受支持,如前所述。
在默认的配置中,“Windows Server 2003 Web 注册代理”通过 DCOM 与 CA 通信,并通过轻量级目录访问协议 (LDAP) 和 Kerberos 与域控制器建立通信。 但是,可以使用其他一些配置步骤对传输控制协议 (TCP) 通信进行限制,即可以让所有“Web 注册代理”和 CA 间的通信都通过一个防火墙。 客户端和“Web 注册代理”之间的通信都是纯 HTTP 流量,因此您可以对通过运行“Web 注册页”的网站所使用的端口的网络流量进行限制。 但是,如果对“Web 注册页”使用了智能卡注册站,则客户端还将要求到 CA 的直接 DCOM 连接。
要设置 CA 配置,请按照 Microsoft 提供的最佳做法建议进行操作。 有关信息以及建议的配置,请参见“相关链接”。
要通过“Web 注册页”实现证书注册,不必在 CA 所安装的计算机上安装或主持 IIS,也不建议这么做。 在任何情况下,CA 安装都会安装某个 CA 的“Web 注册支持”,因为“证书服务”依赖于“Web 注册支持”的一些组件。 但如果没有安装 IIS,则通过 Web 进行证书注册的功能将被禁用。
在“Web 注册代理”和发放证书的 CA 间存在防火墙的情况下,您必须更改 CA 和操作系统配置,以便减少用于在两个系统间通信的端口的数量。 Web 注册代理 的配置则保持不变。
图 2 说明了本白皮书中介绍的防火墙环境下的 Web 注册配置。 实线显示了进行 Web 注册时的网络流量。 虚线显示了注册代理部署智能卡证书时的其他网络流量。

图 2: 防火墙环境下的 Web 注册示例
图 3 说明了本白皮书中介绍的防火墙环境下的证书自动注册配置。

图 3: 防火墙环境下的证书自动注册配置示例
所有计算机都加入到相同的 Active Directory 林中。 该林具有两个域,分别为 child.contoso.com 和 contoso.com。 CA 计算机是 contoso.com 域的成员,并且它可以和域控制器 dc.contoso.com 正常通信。 客户端 (client.child.contoso.com) 和“Web 注册代理”计算机 (caproxy.child.contoso.com) 是子域的成员,并且可以和维护该域的域控制器 (dc.child.contoso.com) 正常通信。 这里假定域控制器到域控制器间的通信是可靠和正常的。 有关通过防火墙进行 Active Directory 复制的更多信息,请参见
http://www.microsoft.com/technet/prodtechnol/exchange/Exchange2003/proddocs/library/DepGuide.asp
注意: ISA Server 2004 正在过滤远程过程调用 (RPC) 流量。 您应该对域控制器间的防火墙规则强制实施严格的 RPC 兼容。
执行这些配置步骤后,子域中的客户端就可以通过“MMC 管理单元”或 Web 注册界面手动申请证书,或是自动注册证书。
该配置也适用于 CA 计算机、Web 注册代理和客户端加入到相同域的环境。 在一个域的环境中,配置步骤是相同的,但防火墙配置要简单一些。 请参见“为 Web 注册情景配置防火墙”。
注意: 如果在设置和配置 Web 注册组件之前就已存在防火墙,则在安装“Web 注册支持”组件前,您必须在 CA 中执行以下配置步骤。 必须执行此操作的原因是,在安装过程中,Web 注册组件已经与证书发放 CA 进行了通信。
在默认配置中,Windows Server 2003 CA 会通过 RPC 和 DCOM 与客户端进行通信。 RPC 用于支持 Windows 2000 客户端和服务器,而 DCOM 用于支持 Windows XP 和 Windows Server 2003 客户端。 由于防火墙通常无法很好地处理 RPC 流量,因此需要禁用 CA RPC 接口。 请注意,此步骤并没有禁用主持 CA 的计算机上的所有 RPC 功能。 在 CA 中禁用 RPC 并不影响在所有计算机均运行 Windows XP 或 Windows 操作系统系列的更高版本的环境中使用“证书 MMC 管理单元”或自动注册进行证书注册的功能。 在 CA 中禁用 RPC 接口的情况下,Windows 2000 计算机无法使用“证书 MMC 管理单元”注册证书,但可以通过“Web 注册支持”注册证书。
要禁用 RPC 接口,请执行以下步骤。
1. | 使用安装 CA 的计算机上具有本地管理员权限的帐户登录到该计算机中。 在上述示例中,即登录到 ca.contoso.com。 |
2. | 在命令行提示符处,运行以下命令。 certutil -setreg ca\interfaceflags +0x8 |
3. | 该命令输出会列出已启用的标记。 请确认命令输出列表的 InterfaceFlags 中含有 IF_NORPCICERTREQUEST。 |
4. | 通过证书 MMC 管理单元或以下命令行步骤重新启动证书机构服务。 net stop certsvc & net start certsvc |
要重新将 RPC 接口设置为默认设置,请将上述命令中的加号换成减号。
certutil -setreg ca\interfaceflags -0x8
CA 主要被实现为 DCOM 应用程序。 默认情况下,DCOM 会使用编号较高的 TCP 端口来响应客户端申请。 使用“DCOM 证书 MMC 管理单元”后,就可以强制对“证书服务”使用自定义的 TCP 端口。
1. | 登录到证书发放 CA 后,从命令行提示符处运行以下命令。 dcomcnfg.exe |
2. | 在 组件服务 MMC 管理单元的左窗格中,依次展开组件服务、计算机、我的电脑和 DCOM Config。 |
3. | 在右窗格中,选择 CertSrv 申请。 |
4. | 在操作菜单上,单击属性。 |
5. | 在终结点选项卡上,单击添加。 |
6. | 选择使用静态终结点,输入未使用的 TCP 端口号(例如 7680,然后单击确定两次。 |
7. | 关闭MMC 管理单元。 |
8. | 通过 MMC 管理单元或以下命令重新启动证书机构服务。 net stop certsvc & net start certsvc |
要在以后撤销此更改,请从终结点列表中删除已添加的条目。
通过“Web 注册页”进行证书注册的防火墙配置和上述情况一致。 为使证书注册时所涉及的计算机间可以进行通信,防火墙必须配置为允许使用表 3 中说明的网络协议。
表 2 显示了证书注册时在客户端、Web 注册代理和“证书服务”间进行通信所需的网络协议。 可能还会需要其他一些协议,例如域名系统 (DNS),不过这取决于这些资源是只能通过防火墙访问或是可以直接访问。 协议标签是从 ISA 2004 配置中获取的,并且可能与不同防火墙产品中使用的协议说明不同。
| 协议 | 端口范围 | 协议类型 | 方向 |
HTTP | 80 | TCP | 出站 |
自定义 | 7680 | TCP | 出站 |
Kerberos-Sec (UDP) | 88 | UDP | 发送接收 |
LDAP | 389 | TCP | 出站 |
LDAP (UDP) | 389 | UDP | 发送接收 |
RPC(所有接口) | 135 | TCP | 出站 |
表 2: 用于证书注册的网络协议
要配置防火墙,请定义镜像以下规则的规则。 如表 2 所示应用协议定义,并特别注意 RPC 过滤器。 您必须根据表 3 启用或禁用严格 RPC 过滤。
| 规则 | 来自 | 去向 | 协议 | 严格 RPC |
1 | client.child.contoso.com | caproxy.child.contoso.com | HTTP | n/a |
2 | caproxy.child.contoso.com | CA.contoso.com | 自定义 | n/a |
3 | caproxy.child.contoso.com | CA.contoso.com | RPC(所有接口) | 否 |
4 | caproxy.child.contoso.com | DC.contoso.com | Kerberos-Sec (UDP) | n/a |
5 | caproxy.child.contoso.com | DC.contoso.com | LDAP (UDP) | n/a |
6 | CA.contoso.com | caproxy.child.contoso.com | RPC(所有接口) | 是 |
7 | CA.contoso.com | dc.child.contoso.com | Kerberos-Sec (UDP) | n/a |
8 | CA.contoso.com | dc.child.contoso.com | LDAP | n/a |
9 | CA.contoso.com | dc.child.contoso.com | LDAP (UDP) | n/a |
10 | CA.contoso.com | dc.child.contoso.com | RPC(所有接口) | 否 |
表 3:使用 Web 注册进行证书注册的防火墙配置
如果在您的配置中所有计算机均位于相同的域中,您必须仅实现规则 1、2、3 和 6。
如果您使用智能卡注册站来注册证书,则除了表 4 中的规则以外,您还必须配置表 3 中的防火墙规则。
| 规则 | 来自 | 去向 | 协议 | 严格 RPC |
1 | client.child.contoso.com | CA.contoso.com | 自定义 | n/a |
2 | client.child.contoso.com | CA.contoso.com | RPC(所有接口) | 是 |
3 | client.child.contoso.com | DC.contoso.com | Kerberos-Sec (UDP) | n/a |
4 | client.child.contoso.com | DC.contoso.com | LDAP (UDP) | n/a |
表 4:其他防火墙规则
注意:根据您防火墙软件的不同,在您应用防火墙规则后,可能需要几分钟时间这些规则才会真正启用。 同时,强烈建议您重新引导 CA 和“Web 注册代理”计算机,以确保它们在初始状态下可以通过防火墙正常通信。 某些情况下,在防火墙就位但允许规则尚未启用时,防火墙两侧的客户端无法建立安全通道。 为了强制在“Web 注册代理”和 CA 间进行正确握手,您应当从重新引导。
如果防火墙位于申请计算机和 CA 之间,则用户和计算机可以注册证书。 以下防火墙规则要求禁用 CA 中的 RPC 接口,并且已为 CA 的 DCOM 接口设置了一个固定的端口。
有关协议定义的更多信息,请参见表 2。对于规则 2,请确保禁用严格 RPC 过滤。
| 规则 | 来自 | 去向 | 协议 | 严格 RPC |
1 | client.child.contoso.com | CA.contoso.com | Custom | n/a |
2 | client.child.contoso.com | CA.contoso.com | RPC(所有接口) | 否 |
3 | client.child.contoso.com | dc.contoso.com | Kerberos-Sec (UDP) | n/a |
4 | client.child.contoso.com | dc.contoso.com | LDAP (UDP) | n/a |
5 | CA.contoso.com | dc.child.contoso.com | Kerberos-Sec (UDP) | n/a |
6 | CA.contoso.com | dc.child.contoso.com | LDAP (UDP) | n/a |
7 | CA.contoso.com | dc.child.contoso.com | RPC(所有接口) | 否 |
表 5:手动证书注册和自动注册的防火墙配置
建议您在安装“证书服务 Web 注册支持”之前单独安装 IIS 组件。 这是为了确保这两个组件的安装和配置顺序正确。 如果您以前安装了 IIS,请继续在“Web 注册代理”计算机上安装 IIS。
注意:要完成此任务可能需要 Windows Server 2003 安装介质。
1. | 使用将要安装“Web 注册页”的计算机上具有本地管理员权限的帐户登录到该计算机中。 在上述示例中,即登录到 caproxy.child.contoso.com。 | ||||||||||||||||
2. | 单击开始按钮,指向运行,键入 sysocmgr /i:sysoc.inf,然后单击确定。 | ||||||||||||||||
3. | “Windows 组件向导”将会出现。 选择以下组件:
| ||||||||||||||||
4. | 单击下一步继续操作。 | ||||||||||||||||
5. | 向导将会安装所选组件。 要关闭向导,请单击完成。 |
“证书服务 Web 注册页”可以独立于 CA 进行安装。. 您可以仅在运行 IIS 5.0 的 Windows 2000 计算机上安装 Windows 2000 的“Web 注册支持”。 要安装 Windows 2003 的“Web 注册支持”,必须有运行 Windows Server 2003 标准版或企业版的计算机,且计算机上必须安装 IIS 6.0。 Microsoft 不支持 Windows Server 2003 Web 版上的 Web 注册,如下所述: http://www.microsoft.com/resources/documentation/WindowsServ/2003/enterprise/proddocs/en-us/web_server_overview.asp
一般说来,主持“Web 注册页”的计算机和 CA 必须共用相同的 Active Directory 领域。 这是因为有以下两个要求。 首先,CA 和“Web 注册代理”都依赖于 Kerberos 票证,而 Kerberos 票证必须从领域内的密钥分发中心发放。 其次,CA 基于 CA 对象上的 Active Directory 帐户维护注册权限。 若要以合理方式为 CA 配置访问控制列表,您需要添加已知的安全凭据(例如您领域内的安全凭据)。 其他一些考虑因素包括:
| • | 与安装 CA 的计算机不同的是,在安装“Web 注册支持”后,您可以更改计算机的域成员关系。 |
| • | 根据您对于约束委派的选择,您可能需要将 Web 注册计算机安装到运行在 Windows Server 2003 域模式下的域中。 |
注意:完成此任务可能需要 Windows Server 2003 安装介质。
1. | 以域管理员身份登陆到要安装“Web 注册页”的计算机上。 |
2. | 单击开始按钮,指向运行,键入 sysocmgr /i:sysoc.inf,然后单击确定。 |
3. | “Windows 组件向导”出现。 选择证书服务,然后单击详细信息。 |
4. | 选中证书服务 Web 注册支持复选框,然后单击确定。 不要选中“证书服务CA”复选框。 |
5. | 单击下一步继续操作。 |
6. | 将会出现一个窗口,您必须在此窗口中提供证书服务器的计算机名和相应的 CA 名称。 手动输入运行“证书服务”的系统的主机名,或是通过单击浏览来选择 CA。 在您提供计算机名后,CA 名称就会出现在标记为 CA 的列表框中。 单击下一步继续操作。 |
7. | 向导将会提示您,需要暂时停止 IIS 服务。 单击是继续操作。 |
8. | 将会出现一个提示窗口,提醒您必须启用 Active Server Pages。 单击是继续操作。 |
9. | 向导将安装所选组件。 要关闭向导,请单击完成。 |
如果您指定或键入了错误的 CA 计算机名,或是选择了错误的证书服务,则不必重新安装“证书服务 Web 注册页”。 参见“调整代理配置”。
如果您在向导询问是否启用 IIS 的 Active Server Pages (ASP) 支持时意外地单击了否,您可以手动启用 Active Server Pages。 如果您在安装“Web 注册页”之后安装 IIS,也会要求进行这种显式激活。 在命令行提示符处,键入
certutil -vroot
按 ENTER 键,或是打开 Internet 信息服务 (IIS) 管理器,并启用“Web 服务扩展”容器中的ASP。
“Web 注册页”的访问权限是通过 IIS 中的 Web 应用程序的目录安全设置来控制的。
Windows 2000 和 IIS 5.0 的默认配置设置为以下身份验证方法。
| • | 默认网站:匿名访问和集成 Windows 验证 |
| • | CertSrv:基本文本验证和集成 Windows 验证 |
Windows Server 2003 和 IIS 6.0 的默认配置设置为以下身份验证方法。
| • | 默认网站:匿名访问和集成 Windows 验证 |
| • | CertSrv:集成 Windows 验证 |
客户端可立即识别对这些设置所作的任何更改。 IIS 和网站都不需要重新启动就可以应用新配置。 由于只有“集成 Windows 验证”允许从加入域和未加入域的计算机上注册证书,因此强烈建议您对所有“Web 注册代理”配置“集成 Windows 验证”。 这适合于以下配置。
| • | “Windows 2000 Web 注册代理”和 Windows 2000 CA |
| • | “Windows 2000 Web 注册代理”和 Windows Server 2003 CA |
| • | “Windows 2003 Web 注册代理”和 Windows Server 2003 CA |
在任何情况下,如果您将身份验证方法更改为“基本文本验证”,我们强烈建议您使用安全套接字层 (SSL) 来保护客户端和“Web 注册代理”之间的 HTTP 通道。 如果没有 SSL 服务器证书,则客户端和服务器(包括用户凭据)之间的所有 HTTP 流量都将通过网络以明文形式发送。 一般说来,强烈建议证书服务器“Web 注册页使用 SSL(甚至带有“集成 Windows 验证”),以便达到最佳安全性和私密性。
在“证书服务”和“Web 注册”位于不同物理计算机的配置中,要求您管理标识和模拟问题。 “Web 注册”计算机是一个代理,它来回充当“Web 注册”客户端和后端的“证书服务”。 要启用代理功能,“Web 注册”计算机必须可以在 Active Directory 中进行委派,否则它就不能进行模拟并代表用户申请证书。
通常,您可以按照以下两个方法来配置委派。
| • | 启用计算机级别的委派信任。 这意味着该计算机上的任何应用程序和服务都可以模拟 Active Directory 中的对象。 在 Windows 2000 混合模式或更高域模式中可以使用此功能。 |
| • | 对计算机上唯一有权模拟对象的服务启用约束委派。 此功能最少需要域功能级别等于 Windows Server 2003。 |
默认情况下,域控制器总是可以进行委派,因此无需将域控制器显式配置为可以进行委派。 有关委派身份验证的一般性信息,请参见
http://www.microsoft.com/resources/documentation/WindowsServ/2003/enterprise/proddocs/en-us/se_constrained_delegation.asp
通过“Web 注册”注册证书需要依赖于 Kerberos 身份验证和身份验证协议。 在 Windows 2000 和更高版本的系统中,Kerberos 是作为一项核心技术来实现的。 一般情况下,Kerberos 票证的处理是自动进行的,这样您就不必显式配置它的行为。 以下文档说明了在类似于证书 Web 注册的分布式环境中 Kerberos 是如何工作的。
| • | Kerberos Protocol Transition and Constrained Delegation,位于以下 Microsoft 网站 |
| • | "Exploring Kerberos, the Protocol for Distributed Security in Windows 2000",位于以下 Microsoft 网站http://www.microsoft.com/msj/0899/kerberos/kerberos.aspx |
一般说来,加入域的客户端都会自动申请它们自己的 Kerberos 票证,并使用该票证通过“Web 注册代理”的验证以及在 CA 处注册证书。 但是,未加入域的客户端根本无法收到 Kerberos 票证。 因此,系统要求“Web 注册代理”模拟用户,并代表未加入域的客户端申请 Kerberos 票证。
以下步骤显示如何启用加入域的计算机上的委派信任,这样计算机上主持的任何服务就可以从该计算机处继承信任。 有关更多信息,请参见 Windows Server 2003 联机帮助,地址是
http://www.microsoft.com/resources/documentation/WindowsServ/2003/enterprise/proddocs/en-us/se_del_computer.asp
另请参见 Microsoft 知识库文章,地址是 http://support.microsoft.com/?id=325894
1. | 以管理员身份登录到“Active Directory 用户和计算机 MMC 管理单元”安装的计算机上。 |
2. | 要启动“Active Directory 用户和计算机 MMC 管理单元”,请单击开始按钮,指向运行,键入 dsa.msc,然后单击确定。 |
3. | 将出现“Active Directory 用户和计算机 MMC 管理单元”。 在左窗格中,展开“Web 注册代理”计算机所在的域。 在上述示例中,即展开child.contoso.com。 |
4. | 在左窗格中,展开“Web 注册代理”计算机所在的容器或组织单元 (OU)。 |
5. | 在右窗格中,选择“Web 注册代理”计算机对象。 |
6. | 在操作菜单上,单击属性。 |
7. | 将出现计算机对象的“属性”窗口。 在常规 选项卡上,选中信任计算机作为委派复选框。 |
8. | 一个提示窗口将会出现,提醒您此操作的安全敏感性。 单击确定两次以关闭“属性”窗口。 |
与完全的信任计算机作为委派相比,约束委派仅允许特定计算机上的特定服务帐户来模拟对象。
图 4 说明了如何使用约束委派来实现代理 URL、服务主体名称 (SPN) 和完全限定域名 (FQDN) 之间的名称匹配。
1. | 客户端输入 http://caproxy.child.contoso.com URL 来访问“Web 注册页”。 |
2. | 系统在 Active Directory 中查找匹配该 URL 的 SPN,并标识出正确的应用程序池。 执行此步骤是因为不同的应用程序池可以共用相同的标识。 为使客户端可以选择正确的应用程序池,需要提供 HTTP SPN。 |
3. | 使用委派,CA 确定是否对 caproxy.contoso.com 允许“远程过程调用”服务协议。 |
4. | 如果允许使用该协议,CA 确定服务帐户是否可以进行委派。 |
5. | 如果所有委派要求都满足,CA 代理就可以模拟证书申请方的对象。 |
如前所述,只有将域功能级别设置为 Windows Server 2003,约束委派才能工作。提升域级别与林级别无关。 您可以提升域级别,而不提升林级别。 只有主持“Web 注册代理”的计算机要求 Windows Server 2003 域级别。 这意味着,如果不能提升所有生产域的域级别,您就可以考虑单独使用一个临时域来主持“Web 注册代理”计算机。
使用 IIS 6.0 可以轻松实现约束委派,因为它支持允许 IIS 在不同安全上下文中运行 Web 应用程序的应用程序池。
要在生产系统中使用约束委派,需要执行以下几个步骤。
1. | 设置一个单独的 IIS 服务帐户。 |
2. | 设置 SPN。 |
3. | 配置信任该服务帐户进行委派。 |
4. | 将受信服务帐户分配给 IIS。 |
5. | 配置信任计算机帐户进行委派。 |
6. | 配置新的 IIS 应用程序池。 |
如果您计划在您的环境中运行多个独立的 Web 代理服务器,则必须对每个“Web 注册代理”服务器重复上述六个步骤。 但是,如果您具有 IIS 群集,其中多个节点都安装了“Web 注册页”,则只需对群集中的每个节点重复步骤 3 到步骤 6。
默认情况下,“证书服务 Web 注册支持”已在默认应用程序池中注册,因此,它使用“网络服务”的标识。 为准备“Web 注册支持”的标识更改,您必须提供可进行委派的单独的服务帐户。 参见“配置服务帐户可以进行委派”。
1. | 登录到安装了“Active Directory 用户和计算机 MMC 管理单元”的计算机。 |
2. | 单击开始按钮,指向运行,键入 dsa.msc,然后按 ENTER 键。 |
3. | 将会出现“Active Directory 用户和计算机 MMC 管理单元”。 选择“Web 注册代理”安装的域。 在上述示例中,即展开 child.contoso.com。 |
4. | 在左窗格中,选择“用户”容器。 如果选择其他 OU,请确保没有对该 OU 应用任何组策略,因为这可能会影响该服务帐户的功能。 |
5. | 在操作菜单上,选择新建,然后选择用户。 稍后此服务帐户将会成为 IIS 的服务帐户。 |
6. | 对于“全名”,键入SPN<Servername>,其中 <Servername> 要用“Web 注册代理”服务器的主机名来替换,例如 SPNcaproxy。 |
7. | 在用户登录名和用户登录名(Windows 2000 以前版本)中也输入 SPN<Servername>,然后单击下一步。 |
8. | 输入服务帐户的密码两次,并清除用户下次登录时必须更改密码复选框。 |
9. | 单击完成以关闭向导。 |
为使后面的配置步骤可以利用新创建的服务帐户,必须为该服务帐户注册一个 SPN。 SPN 类似于 Active Directory 帐户的别名。 要注册 SPN,您的计算机中必须安装了 setspn.exe 工具。 该工具随 Windows Server 2003 支持工具一起提供。
更改 SPN 可以立即生效。 在客户端识别帐户的 SPN 时,它将使用服务帐户的 Active Directory 对象中找到的 SPN。
要设置 SPN,请执行以下步骤。
1. | 登录到计算机后,单击开始按钮,指向运行,键入cmd.exe,然后按 ENTER 键。 |
2. | 要注册“Web 注册代理”主机名,请在命令行提示符处键入以下命令,然后按 ENTER 键。 setspn –A http/<Servername> <ServiceAccount> 其中,您必须将 <Servername> 替换为 Web 注册服务器的主机名,将 <ServiceAccount> 替换为前面创建的服务名。 例如: setspn –A http/caProxy SPNcaProxy |
3. | 您还必须注册服务器的 FQDN。 在命令行提示符处,键入以下命令,然后按 ENTER 键。 setspn –A http/<FQDN-Servername> <ServiceAccount> 其中,您需要将 <FQDN-Servername> 替换为 Web 注册服务器的完全限定名,将 <ServiceAccount> 替换为前面创建的服务名。 例如: setspn –A http/caProxy.child.contoso.com SPNcaProxy |
4. | 若要验证设置,请键入以下命令,然后按 ENTER 键。 setspn –L SPNcaProxy 该命令将输出类似如下结果: Registered ServicePrincipalNames for CN=SPNcaProxy,OU=Users,DC=child,DC= contoso,DC=com: http/caProxy http/caProxy.contoso.com 如果您发现执行了错误操作,则使用 setspn –D 删除 SPN,然后如前所述设置更正后的 SPN。 重要说明:如果您不正确地设置了 SPN,则当客户端尝试连接网站时可能会出现意外行为。 如果配置了 SPN,但没有网页可运行在已定义服务帐户的上下文中,则将显示以下错误信息之一。 "The page cannot be displayed."(无法显示网页)或 "You are not authorized to view this page."(您无权查看该网页)。有关更多信息,请参阅“ |
创建服务帐户后,您必须配置它的委派能力。 此步骤使得服务帐户可以模拟用户,并代表他们申请证书。
1. | 登录到计算机时,请选择新在“Active Directory 用户和计算机 MMC 管理单元”中创建的服务帐户。 |
2. | 在操作菜单上,选择属性。 |
3. | 单击委派选项卡。 如果您没有看到“委派”选项卡,则可能是离您最近的域控制器尚未识别域功能级别已经提升。 |
4. | 请选择仅信任此用户作为指定服务的委派和仅 Kerberos。 注意:选择“使用任意的身份验证协议”时此配置也有效,但是,由于“仅 Kerberos”的限制更为严格,因此在本配置中推荐使用它。 |
5. | 单击添加。 |
6. | 在添加服务窗口中,选择用户或计算机。 |
7. | 在选择用户或计算机窗口中,输入运行“证书服务”服务的计算机的名称。 请注意,这不是代理计算机的名称。单击“最终用户许可协议”上的“确定”。 |
8. | 在添加服务窗口中,从可用服务的列表中,选择服务类型显示为 HOST 条目,然后单击确定两次以关闭“属性”窗口。 |
在此步骤中,将进一步限制模拟能力。 您将定义从此计算机上通过允许进行委派的对象可以初始化何种协议。
1. | 登录到该计算机上后,选择“Web 注册代理”的计算机帐户。 |
2. | 在操作菜单上,选择属性。 |
3. | 单击委派选项卡。 |
4. | 选择仅信任此计算机来委派指定的服务和使用任意的身份验证协议。 注意:默认情况下,委派凭据列表为空。 但是,如果列表中存在适用于其他用途的条目,也没有关系。 一般不会与现有条目发生冲突。 |
5. | 单击添加。 |
6. | 在添加服务窗口中,选择用户或计算机。 |
7. | 在选择用户或计算机窗口中,输入运行“证书服务”服务的计算机的名称。 请注意,这不是代理计算机的名称。单击确定。 |
8. | 在添加服务窗口中,从可用服务的列表中,选择服务类型显示为 rpcss 条目,然后单击确定两次以关闭“属性”窗口。 |
9. | 关闭 Active Directory 用户和计算机 MMC 管理单元。 |
10. | 注销计算机。 |
为了允许帐户使用 Web 应用程序池的标识,该帐户在本地系统中必须具有适当的权限。 默认情况下,IIS_WPG 组(工作进程组)持有正确的权限集。 安装 IIS 时,系统会创建 IIS_WPG 组,并在其下创建三个成员:“本地服务”、“网络服务”和“系统”。
您必须手动将服务帐户添加进来,这样服务帐户才能成为应用程序池的标识。 要进行这种更改,请执行以下步骤。
1. | 以管理员权限登录到作为“Web 注册代理”的计算机中。 |
2. | 单击开始按钮,指向运行,键入 compmgmt.msc,然后按 ENTER 键。 |
3. | 在左窗格中,展开本地用户和组对象,然后展开组。 |
4. | 在右窗格中,选择 IIS_WPG 对象。 |
5. | 在操作菜单上,选择属性。 |
6. | 单击添加,然后键入前面创建的其中服务帐户 SPN<Servername>。 |
7. | 单击确定两次,将该帐户添加到 IIS_WPG 组中。 |
仅当 IIS 运行在工作进程隔离模式下时,IIS 6.0 的这个功能才可用。 有关应用程序池标识的更多信息,请参见 Microsoft 网站的“Configuring Application Pool Identity"
http://www.microsoft.com/resources/documentation/WindowsServ/2000/standard/proddocs/en-us/ca_cfgwrkridentity.asp
如前面提到的,CertSrv 应用程序需要服务帐户的标识才能启用约束委派。 我们建议您创建运行在服务帐户的安全上下文中新的应用程序池,而不要更改默认网站的标识。 要创建和配置新的应用程序池,请执行以下步骤。
1. | 在计算机管理控制台中,展开服务和应用程序节点,然后展开 Internet 信息服务 (IIS) 管理器。 |
2. | 在左窗格中,选择应用程序池。 |
3. | 在操作菜单上,选择新建,然后选择应用程序池。 |
4. | 对于应用程序池 ID,键入 CertificateServices。 这个名称并非特定名称,但在后面的步骤中将重复使用“CertificateServices”。 |
5. | 选中将现有应用程序池作为模板复选框。从列表中选择DefaultAppPool,然后单击确定。 |
6. | 左窗格中已选中了新创建的应用程序池。 在操作菜单上,选择属性。 |
7. | 单击标识选项卡。 |
8. | 选择可配置。 |
9. | 输入前面创建的服务帐户及其域名,格式为 Type <domainname>\SPN<Servername>,其中,您必须将 <domainname> 替换为在其中创建服务帐户的域名,将 <Servername> 替换为您的“Web 注册代理”服务器的主机名。 |
10. | 在相应的文本字段中键入服务帐户的密码,然后单击确定。 |
11. | 将会出现一个密码确认窗口,您必须在其中重新键入服务帐户的密码。 重新键入密码,然后单击确定。 |
12. | 单击确定以关闭“应用程序池”属性。 |
13. | 在左窗格中,展开网站,然后打开默认网站。 在右窗格中,选择 CertSrv。 |
14. | 在操作菜单上,选择属性。 |
15. | 在虚拟目录选项卡上,将应用程序池从 DefaultAppPool 更改为 CertificateServices。 |
16. | 单击目录安全性选项卡。 |
17. | 在身份验证和访问控制区域中,单击编辑。 |
18. | 清除基本文本身份验证(密码以明文形式发送) 复选框,并确认只选中了集成 Windows 身份验证复选框。 |
19. | 单击确定两次以关闭“属性”窗口。 |
20. | 在文件菜单上,单击退出以关闭 Internet 信息服务 (IIS) 管理器。 |
21. | 注销计算机。 |
至此,约束委派的配置就已经完成了。 现在您可以从您的“Web 注册代理”计算机上开始注册证书。
注意:如果您计划再次卸载“Web 注册”功能,则您还必须从 IIS 配置中手动删除所创建的应用程序池。
在将来某些时候,可能需要更改“Web 注册代理”的配置,以便它可以指向其他服务器上的“证书机构”。 幸好证书服务器的名称在“Web 注册代理”中是以 ASCII 文本文件的形式保存的,因此还比较容易更新。 要更改目标证书服务器,请执行以下步骤。
1. | 以本地管理员身份登录到安装了“Web 注册代理”的计算机中。 |
2. | 为了找出服务器配置字符串,请在命令行提示符处运行以下命令。 certutil -dump |
3. | 找到您想要连接的 CA,并对标注为“Config”的值进行注释(区分大小写) |
4. | 在“Web 注册代理”计算机上,使用“记事本”打开 %WINDIR%\system32\certsrv\certdat.inc 文件,并对其进行编辑。 |
5. | 该文件中有一个“global state”小节。 将新证书服务器的 sServerType、sServerConfig 和 sServerDisplayName 变量更改为配置设置。 如前所述,sServerConfig 参数是区分大小写的。 |
6. | 保存文件,并关闭“记事本”。 |
在成为一个可正常发挥作用的“Web 注册”客户端之前,需要对客户端计算机进行一些配置。
运行早于 Windows 2000 SP4 或 Windows XP SP1 操作系统并且没有安装 Windows hotfix 323172 (http://support.microsoft.com/?id=323172) 的计算机在首次访问“Web 注册页”时,系统都会提示安装证书注册控件。 首次在计算机上安装证书注册 ActiveX 组件时需要“管理员”或“超级用户”权限。
在 CA 和“Web 注册”支持安装在不同计算机的情况中,若要使用证书“Web 注册”,在作为配置一部分的所有客户端上至少必须安装 Internet Explorer 6.0.2600.0000 版。 如果是早期版本,将会出现身份验证错误,并导致证书注册失败,这是因为早期版本不支持“集成 Windows 验证”。
在任何情况下,您都必须确保安装在客户端计算机上的 Internet Explorer 版本受系统支持,请对照以下网址中提供的生命周期信息: http://support.microsoft.com/default.aspx?id=fh;[ln];lifeprodi
在 Windows 2000 和 Windows XP 中,即使两个操作系统中安装的是相同版本的 Internet Explorer,Internet Explorer 6.0 的默认“Internet 选项”设置也会有所不同。 在 Windows 2000 中,您必须手动启用“集成 Windows 验证”。 而在 Windows XP 中,Internet Explorer 默认配置为使用“集成 Windows 验证”。 要启用这一特定于用户的设置,请执行以下步骤。
1. | 以将要通过“Web 注册”注册证书的用户身份登录到作为证书“Web 注册”客户端的计算机。 |
2. | 打开 Internet Explorer。 |
3. | 在工具菜单上,单击 Internet 选项。 |
4. | 在高级选项卡上,向下滚动至“安全”。选中启用集成 Windows 验证(需要重新启动)复选框。 请注意,要激活这一设置,不需要重新启动计算机,但需要重新启动 Internet Explorer。 |
5. | 单击确定,并关闭 Internet Explorer。 |
代表 FQDN 的 URL 是自动添加到 Internet Explorer的“Internet 安全”区域中的。
如果可以使用“Internet 安全”区域中的 URL 引用“Web 注册代理”,则如果要求进行“集成 Windows 验证”,委派将无法进行。 但是,在这种情况下,如果使用“基本文本验证”则可以进行委派。
为了在使用某个 FQDN 引用“Web 注册代理”且要求进行“集成 Windows 验证”的情况下进行委派,您必须在 Internet Explorer 中将该 URL 添加到本地 intranet 站点中。
1. | 以将要通过“Web 注册”注册证书的用户身份登录到作为证书“Web 注册”客户端的计算机。 |
2. | 打开 Internet Explorer。 |
3. | 在工具菜单上,单击 Internet 选项,然后单击安全 选项卡。 |
4. | 选择本地 intranet,单击站点,然后单击稿件。 |
5. | 将“Web 注册代理”的 URL 添加到网站列表中,然后单击确定。 |
若要使计算机可以作为“Web 注册”客户端,计算机上必须安装一个 ActiveX 组件 (Xenroll.dll),且该组件必须可用。 在早于 SP4 但带有 hotfix 323172 的 Windows 2000、Windows 2000 SP4、带有 hotfix 323172 的 Windows XP 和 Windows XP SP1 中,该组件的版本都是 5.131.3659。 在 Windows Server 2003 和 Windows XP SP2 中,该组件的版本都是 5.131.3686。
根据“Web 注册”客户端计算机上所安装版本的不同,您必须安装或升级注册控件。 要更新该控件,可以有以下两种不同方法。
| • | 在连接到“Web 注册页”时通过 Internet Explorer 安装该组件。 “Web 注册页”将会提示您,需要安装 ActiveX 控件。 在您尝试打开以下网页时,该提示就会出现。
要安装该组件,您必须具有本地管理员或超级用户权限。 | ||||||
| • | 通过您的软件部署机制(例如 Microsoft Systems Management Server (SMS))将 ActiveX 组件部署为软件包。 |
该 ActiveX 组件由两个动态链接库 (DLL) 文件组成,因此,在交互安装该组件时,您必须允许两个 DLL。 在安装了“Web 注册页”的计算机上,可以在 %systemroot%\system32\certsrv\certcontrol 中找到这两个 ActiveX DLL。
在您安装了 ActiveX 5.131.3659 版,但尝试从“Windows Server 2003 Web 注册代理”申请证书的情况下,客户端可能会收到一个下载新版控件的提供。 要解决此问题,请参见位于以下站点 Microsoft 知识库文章: http://support.microsoft.com/?id=818026
表 6 显示了在指定配置下支持证书注册并可以成功进行证书注册的情景。 以下术语用于描述这些组件。
| • | Web 注册代理 注册代理安装在 Windows 2000 或 Windows Server 2003 服务器中。 此列中仅可选择一个操作系统。 |
| • | 证书注册 CA 安装在 Windows 2000 服务器或 Windows Server 2003 中。此列中仅可选择一个操作系统。 |
| • | IIS 身份验证模式 “Web 注册支持”使用的网站可接受“基本文本验证”或“集成 Windows 验证”。 此列中可选择一个或多个身份验证模式。 如果选择了多中身份验证模式,则“集成 Windows 验证”将优先于“基本文本验证”。 |
| • | 凭据格式 用户输入的凭据可以是 Windows NT Lan-Manager (NTLM) 格式“domainname\username”或用户主体名称“username@domain”的形式。 |
| • | Internet Explorer (IE) Windows 身份验证模式 Internet Explorer 的默认身份验证行为可以通过 Internet Explorer 设置进行更改。 此列显示 Internet Explorer 中是否启用了 Windows 身份验证。 |
“x”意味着应用了 Windows 身份验证。 字段空白则说明相同组中的其他列应用了 Windows 身份验证。 “n/a”则意味着没有身份验证窗格可输入凭据。
| ID | 客户端操作系统版本 | Web 注册代理 | 证书服务 | IIS 身份验证模式 | 凭据格式 | IE Windows 身份验证模式 | ||||
Windows 2000 | Windows Server 2003 | Windows 2000 | Windows Server 2003 | 基本文本 | Windows 集成 | NTLM y\x | UPN | |||
| 客户端是域成员 | ||||||||||
1 | Windows 2000 | x | x | x | x | 关闭 | ||||
2 | Windows 2000 | x | x | x | n/a | n/a | 打开 | |||
3 | Windows 2000 | x | x | x | x | n/a | n/a | 打开 | ||
4 | Windows XP, | x | x | x | x | 关闭 | ||||
5 | Windows XP, | x | x | x | n/a | n/a | 关闭 | |||
6 | Windows XP, | x | x | x | x | n/a | n/a | 关闭 | ||
7 | Windows 2000 | x | x | x | x | 关闭 | ||||
8 | Windows 2000 | x | x | x | n/a | n/a | 打开 | |||
9 | Windows 2000 | x | x | x | x | n/a | n/a | 打开 | ||
10 | Windows XP, | x | x | x | x | 关闭 | ||||
11 | Windows XP, | x | x | x | n/a | n/a | 关闭 | |||
12 | Windows XP, | x | x | x | x | n/a | n/a | 关闭 | ||
13 | Windows 2000 | x | x | x | n/a | n/a | 打开 | |||
14 | Windows 2000 | x | x | x | x | n/a | n/a | 打开 | ||
15 | Windows XP, | x | x | x | n/a | n/a | 关闭 | |||
16 | Windows XP, | x | x | x | x | n/a | n/a | 关闭 | ||
| 客户端是工作组成员 | ||||||||||
17 | Windows 2000 | x | x | x | x | 关闭 | ||||
18 | Windows 2000 | x | x | x | x | 打开 | ||||
19 | Windows 2000 | x | x | x | x | x | 关闭 | |||
20 | Windows 2000 | x | x | x | x | x | 打开 | |||
21 | Windows XP, | x | x | x | x | on | ||||
22 | Windows XP, | x | x | x | x | x | 打开 | |||
23 | Windows 2000 | x | x | x | x | 关闭 | ||||
24 | Windows 2000 | x | x | x | x | 打开 | ||||
25 | Windows 2000 | x | x | x | x | x | 打开 | |||
26 | Windows XP, | x | x | x | x | on | ||||
27 | Windows XP, | x | x | x | x | 打开 | ||||
28 | Windows XP, | x | x | x | x | x | 打开 | |||
29 | Windows 2000 | x | x | x | x | 打开 | ||||
30 | Windows 2000 | x | x | x | x | x | 打开 | |||
31 | Windows XP, | x | x | x | x | 打开 | ||||
32 | Windows XP, | x | x | x | x | x | 打开 |
表 6: 支持证书注册的情景
注意:如果启用了计算机的委派信任,则对于情景 5、6、21 和 22,将会出现错误信息“The specified component could not be found in the configuration information. 0x80070862 (WIN32: 2146)”。
本节提供了如何解决客户端或服务器系统配置不完整或不正确情况下所出现问题的指南。 每个情景的标题有意使用了向正在尝试进行注册的用户或管理员显示的错误信息。 对于每个情景,除了提供建议的解决方案外,还会提供一个关于问题的简短说明。
下节阐述了主要出现在 Web 注册配置中的问题。
如果您使用安装了 5.131.3659.0 版或更高版本的客户端计算机连接 Windows CA 的“Web 注册页”,则“正在下载 ActiveX 控件”信息将出现,并且不会消失。
如果客户端上的 Xenroll.dll 版本大于 CA 上的 Xenroll.dll 版本,则有可能出现这种情况。 要解决此问题,请参见以下网址的 Microsoft 知识库文章: http://support.microsoft.com/?id=330389
当您尝试使用 Microsoft Windows Certificate Server 注册智能卡时,进度条中出现“正在下载 ActiveX 控件”后,可能出现此错误信息。当您尝试从尚未安装最新版 Xenroll.dll 的客户端计算机上注册证书时,也有可能出现这一信息。 即使您使用本地管理员权限登录来下载 ActiveX 控件,如果 Internet Explorer 的“受信任的站点”区域中没有主持“Web 注册代理”的网站,也经常会出现这种情况。 要解决此问题,请参见以下网址的 Microsoft 知识库文章: http://support.microsoft.com/?id=330211
使用 Windows XP SP2 时也有可能出现此错误,因为默认情况下禁止安装 ActiveX 控件。 要解决此问题,请单击“确定”以确认错误信息,并用鼠标右键单击地址栏下的警告。 在“上下文”菜单上,单击“允许此页面安装 ActiveX 控件”。 刷新该页面,然后继续安装控件。
如果您尝试从某个域成员计算机上访问“Web 注册页”,并且您使用了有效的域凭据登录,您可能在窗口中收到一条日志信息。 如果“Web 注册支持”和 CA 安装在不同的计算机上,但启用了“集成 Windows 验证”,则会出现这种情况。
要对“Web 注册支持”正常执行“集成 Windows 验证”,您必须将引用“Web 注册代理”的 URL 添加到 Internet Explorer 的“本地 Intranet”区域中。 此外,“本地 Intranet”区域的安全设置中的默认用户身份验证设置必须没有更改。
如果您在智能卡注册代理时遇到此错误信息,请参见“智能卡注册代理”中的相同错误信息。
当客户端尝试通过“高级证书申请”页面申请证书时,它可能会收到以下信息性消息“No certificate templates could be found. You do not have permissions to request a certificate from this CA, or an error occurred while accessing the Active Directory.” 要解决此问题,您需要检查一些配置设置。
首先,请按照以下网址的 Microsoft 知识库文章的介绍验证您的 CA 的配置字符串: http://support.microsoft.com/?id=811418
接着,如果通过这篇文章无法解决问题,请验证从“证书 MMC 管理单元”中是否可以正常进行用户证书注册。如果可以,请验证证书申请者在 CA 和证书模板上的权限。 要验证用户在可用模板上的权限,可以在申请者的安全上下文中运行 Windows Server 2003 版的 certutil。 有关在您的系统上如何获取最新版的 certutil 的信息,请参见“附录”中的“如何在非 Windows Server 2003 计算机上使用最新版的 certutil”。 然后,在命令行提示符处运行以下命令。
certutil -template
对于当前登录的用户不能使用的每个证书模板,您将看到一条“Access denied”状态。 例如:
Administrator: Administrator -- Access is denied. CA: Root Certification Authority -- Access is denied. CAExchange: CA Exchange -- Access is denied. CEPEncryption: CEP Encryption -- Access is denied. ClientAuth: Authenticated Session CodeSigning: Code Signing -- Access is denied.
在上述情景中,用户只能使用 ClientAuth 证书模板注册证书。
如果用户权限的设置正确,则有可能是 certdat.inc 文件中定义的配置字符串与 CA 的配置字符串不同。 请注意,配置字符串是区分大小写的。为了找出正确的配置字符串,请在“Web 注册代理”计算机中运行不带任何命令选项的 certutil.exe 命令。 该命令将显示此林中可用 CA 的列表。 从命令的输出中复制相应的 CA 配置字符串,并将其粘贴到 certdat.inc 文件中。 For more information on this procedure, see “调整代理配置”.
此问题的其他原因(尽管不太常见)可能是“Web 注册代理”的证书模板缓存尚未刷新,因此没有显示新允许的证书模板。 若要手动刷新证书模板,请以管理员身份登陆到 CAproxy 计算机。
在“Windows 2000 Web 注册代理”中,运行以下命令。
Secedit /refreshpolicy machine_policy /enforce
在“Windows Server 2003 Web 注册代理”中,运行以下命令。
gpupdate /force
注意:如果这不能刷新证书模板缓存,请参见以下网址的 Microsoft 知识库文章“A Certificate Request That Uses a New Template Is Unsuccessful”,以便强制刷新缓存: http://support.microsoft.com/default.aspx?id=281260
没有使用域凭据登录到它们自己的计算机中的客户端将会注意到,在提供正确的凭据后,Internet Explorer 刷新了登录窗口。 在每次登录尝试时,“Web 注册代理”都会记录来自源 W3SVC 的事件 ID 100。
如果“Web 注册代理”运行在 Windows 2000 上,并且 CertSrv 的身份验证方法设置为“基本文本验证”时,就会出现此问题。 可能应用了来自域的不允许用户本地登录的“组策略”。
要解决此问题,请将身份验证模式更改为“集成 Windows 验证”,因为这是推荐的身份验证模式。 否则,您必须运行用户帐户或用户帐户所属的组进行本地登录。
客户端可能会收到此错误信息。 无论是“Web 注册代理”,或是与此事务对应的 CA 计算机上,“事件查看器”中都没有发现任何消息。
此错误经常出现在 Windows 2000 工作组中,或是 Internet Explorer 中没有显式启用“集成 Windows 验证”的加入域的计算机上。 在本例中,“Windows 2000 Web 注册代理”与安装在其他计算机上的 Windows Server 2003 CA 协同工作。 “Web 注册代理”上的身份验证方法设置为“集成 Windows 验证”。
或者,如果使用的是 Internet Explorer 中默认启用了“集成 Windows 验证”的 Windows XP 客户端,在用户从未加入域的计算机上使用用户主体名称 (UPN) 登录到 CA 安装在 Windows Server 2003 上的 Windows 2000 注册代理时,也会出现此错误。
若要解决此问题,请在 Windows 2000 计算机上的 Internet Explorer 中启用“集成 Windows 验证”。 在 Windows XP 计算机中,在身份验证到 Web 注册站点时,请使用“domainname\username”,而不要使用 UPN。
客户端收到错误信息“Certificate request was denied.”。 CA 计算机在其应用程序日志中记录事件 ID 53,内容如下:
Event Type: Warning Event Source: CertSvc Event Category: None Event ID: 53 Date: 3/23/2004 Time: 3:20:08 PM User: N/A Computer: W2K-E-CA Description: Certificate Services denied request 14 because Access is denied. 0x80070005 (WIN32: 5). The request was for (Unknown Subject). Additional information: Denied by Policy Module
此问题仅发生在“Web 注册代理”和 CA 安装在两个不同 Windows 2000 计算机的情况中。
此错误可能出现在 Windows 2000 工作组中,或是 Internet Explorer 中没有显式启用“集成 Windows 验证”的加入域的客户端计算机上。 在本例中,使用了“Windows 2000 Web 注册代理”和 Windows 2000 CA。 “Web 注册代理”上的身份验证方法被设置为“集成 Windows 验证”。
或者,如果使用的是默认启用了“集成 Windows 验证”的 Windows XP 客户端,在用户从未加入域的计算机上使用 UPN 登录时,也会出现此错误。
若要解决此问题,请在 Windows 2000 计算机上的 Internet Explorer 中启用“集成 Windows 验证”。 在 Windows XP 计算机中,在身份验证到 Web 注册站点时,请使用“domainname\username”,而不要使用 UPN。
如果客户端收到此错误信息,则原因可能是“The Certification Authority Service has not been started.”(“证书机构服务”没有启动)。 这是一个一般的 DCOM 错误,因此上述原因也不一定准确。
假如“Web 注册代理”具有有效的委派权限,则问题就出在“Web 注册代理”和 CA 安装在不同 Windows Server 2003 计算机的配置上。 若要解决此问题,就要考虑以下一个或多个问题。
| • | 一般说来,如果 CertSrv Web 应用程序的方法设置为“基本文本验证”的话,对于所有类型的客户端(Windows 2000 或是作为域或工作组成员的 Windows XP)都会有这个问题。 这种情况下,请将 CertSrv Web 应用程序的身份验证方法更改为默认值“集成 Windows 验证”。 |
| • | 如果身份验证方法已被设置为“集成 Windows 验证”,则是没有在 Internet Explorer 中启用此方法。 要在 Internet Explorer 中启用“集成 Windows 验证”,请参见“启用集成 Windows 验证”。 |
| • | 如果您从非 CA 计算机信任域的成员计算机上访问“Web 注册页”,并且您是以 CA 所属林中现有的帐户登录的,则如果这两个帐户共用相同的密码的话,身份验证将会失败。 例如,您使用某个帐户登录到工作组成员的计算机中,但该帐户在 Active Directory 林中以不同帐户的形式存在。 这两个帐户共用相同的密码。 这种情况下,“集成 Windows 验证”就将失败。 要解决此问题,请更改其中一个帐户的密码。 |
| • | 此外,如果 Windows XP 尝试使用 UPN 进行登录,但 CertSrv Web 应用程序的身份验证方法被设置为“集成 Windows 验证”,也会出现此错误。 请确保用户始终使用“domainname\username帐户的格式登录网站,而不要使用 UPN 格式。 |
| • | 如果前面的建议仍不能解决问题,请验证 DNS 配置,并确保运行“证书服务”的计算机可以正确解析“Web 注册代理”的名称及其所在域的域控制器的名称。 |
| • | 最后,请检查作为引用 Web 代理的 URL 组成部分的主机名是否与为“Web 注册代理”注册的 SPN 匹配。 如果您使用 IP 地址,而不是 URL 中的主机名,则您必须将该 IP 地址注册为“Web 注册代理”的 SPN。 有关正确注册 SPN 信息,请参见“配置服务主体名称”。 |
| • | 如果在“Web 注册代理”计算机和 CA 计算机之间使用了防火墙,请确保 RPC 通讯不会被过滤。 |
“Web 注册代理”系统日志的错误信息中可能包含类似如下的条目:
Event Type: Error
Event Source: DCOM
Event Category: None
Event ID: 10006
Date: 3/17/2004
Time: 6:18:39 PM
User: CAPROXY\Administrator
Computer: CAPROXY
Description:
DCOM got error "General access denied error" from the computer W2K3-E-CA.contoso.com when attempting to activate the server:
{D99E6E74-FC88-11D0-B498-00A0C90312F3}
此错误最常见的原因是委派权限不正确,或是没有委派权限。 要解决此问题,请确保正确配置委派信任。 有关正确配置的更多信息,请参见“在计算机级别启用委派信任或启用约束委派”。
Windows 2000 CA 应用程序日志的错误信息中可能包含类似如下的条目:
Event Type: Error Event Source: CertSvc Event Category: None Event ID: 21 Date: 3/18/2004 Time: 12:33:52 PM User: N/A Computer: W2K-E-CA Description: Certificate Services could not process request 4 due to an error: Cannot find object or property. 0x80092004 (-2146885628). The request was for (Unknown Subject).
如果您尝试从“Windows Server 2003 Web 注册代理”上访问 Windows 2000 CA,就会出现此错误信息。此配置不受支持。 要解决此问题,请将 CA 的操作系统升级为 Windows Server 2003,或是使用“Windows 2000 Web 注册代理”和 Windows 2000 CA。
如果客户端收到此错误信息,则说明证书申请已经达到证书服务。 CA 策略模块已经确认所有强制性证书属性在证书申请或申请者的 Active Directory 对象中均可用。 出现此问题的原因是没有正确提供所有属性。 CA 计算机会在应用程序日志中以事件 ID 53 记录有关此问题的更多信息。 例如:
Event Type: Warning Event Source: CertSvc Event Category: None Event ID: 53 Date: 3/22/2004 Time: 8:01:30 PM User: N/A Computer: W2K3-E-CA Description: Certificate Services denied request 10 because The EMail name is unavailable and cannot be added to the Subject or Subject Alternate name. 0x80094812 (-2146875374). The request was for CONTOSO2\JimKim. Additional information: Denied by Policy Module
要解决此问题,请使用“Active Directory 用户和计算机 MMC 管理单元”,向用户帐户中添加缺失的属性。
如果您尝试使用 Windows 2000 CA 上主持的“Web 注册页”注册证书,则基于 Intel (IA64) 的客户端将无法注册。 要解决此问题,请参见以下网址的 Microsoft 知识库文章: http://support.microsoft.com/?id=283237
本节介绍配置了约束委派的情况下可能出现的错误信息。 麻烦的是,一些错误信息可能是由多个原因引起的,因此您必须确保多个设置正确。
当加入域的计算机连接到“Web 注册页”时,可能会出现一个意外窗口,要求用户提供凭据。 输入凭据后,此窗口即会刷新。 在三次输入凭据不成功后,就会出现错误信息“You are not authorized to view this page.”。
要解决此问题,需要考虑以下一个或两个原因。
| • | 首先,请验证为服务帐户而设置的 SPN。 可能没有为服务帐户注册任何 SPN。 若要更正 SPN 设置,请参见“配置服务主体名称”。 在客户端重新启动 Web 浏览器后,此问题即会解决。 |
| • | 其次,请验证 IIS 配置,并确保 CertSrv 应用程序运行在合适的应用程序池中。 请参见“配置新的 IIS 应用程序池”,以更正此设置。 更改应用程序的应用程序池不需要重新启动网页或 Web 服务器。 在客户端重新启动 Web 浏览器后,此问题即会解决。 |
当未加入域的客户端输入了用户凭据并连接到“Web 注册页”,但没有正确注册 SPN 或是 CertSrv 应用程序运行在错误的应用程序池中时,就会出现此错误信息。
要解决此问题,请参见“You are not authorized to view this page”中建议的对此问题的解决方案。
此错误也有可能由客户端公钥太大引起,如以下网址的 Microsoft 知识库文章所述: http://support.microsoft.com/?id=278475
由于 DCOM 是一个标准的协议,因此它不会提供有关“证书服务”的任何特定的错误信息。 如果客户端收到“Access is denied”的错误信息,则在 CA 安装的计算机或“Web 注册代理”的“事件查看器”中会记录这些事件。 以下是产生此错误的一些较为常见的问题。
如果错误设置了服务帐户的 SPN,就会出现“Access denied”错误。 请确保仅将 SPN 设置为服务类型“http”。 如果服务帐户还设置了其他服务类型(例如“host”),请将这些服务类型删除。 访问“Web 注册页”的客户端可以立即识别对于此问题的更正。
产生此错误信息的原因可能有两个。
| • | 如果为敏感帐户设置了帐户选项“敏感帐户,不能委派”,就可能出现“Access denied”错误。 要解决此问题,请使用“Active Directory 用户和计算机 MMC 管理单元”,打开“帐户属性”,然后清除“敏感帐户,不能委派”复选框。 如果使用了“集成 Windows 验证”,则使用域帐户登录到安装了“Web 注册代理”的林的用户必须先注销,然后重新登录才能识别此更改。 这是因为客户端必须为“Web 注册代理”的服务主体刷新它的 Kerberos 票证。Web 代理的安全主体仅在登录时刷新。 如果不注销,您也可以使用“Windows 资源工具包”中提供的 klist.exe 清除票证。 从工作组计算机上连接进来的用户必须关闭他们的 Web 浏览器,然后重新在“Web 注册页”验证才能识别此更改。 – 或者 – |
| • | 如果服务帐户的委派配置中设置的计算机名错误,也有可能出现“Access denied”错误。 请确认服务帐户可以向其提供委派凭据的服务设置为通过“Web 注册页”访问的 CA 计算机的名称。 此外,有关更多信息,请参见“配置信任服务帐户进行委派”。 客户端访问“Web 注册页”时可以立即识别对服务帐户的委派设置所作的更改。 这和 Kerberos 票证没有关系。 |
如果计算机对象的委派设置被设置为“仅 Kerberos”,就可能出现“Access denied”错误。 计算机帐户必须允许使用“委派”窗口中的任何身份验证协议。 有关更多信息,请参见“配置信任计算机帐户进行委派”。
更改此设置需要在所有“Web 注册代理”计算机上清除 SPN 的所有 Kerberos 票证。 在您应用了正确的更改后,请使用“Windows 资源工具包”中的 kerbtray.exe 或 klist.exe 来清除这些这些票证。
如果计算机对象的委派设置的设置不正确,就有可能出现“Access denied”错误。 要更正此设置,请参见“配置信任计算机帐户进行委派”。
更改此设置需要在所有“Web 注册代理”计算机上清除 SPN 的所有 Kerberos 票证。 在您应用了正确的更改后,请使用“Windows 资源工具包”中的 kerbtray.exe 或 klist.exe 来清除这些这些票证。
如果“Web 注册代理”的 %WINDIR%\system32\certsrv\certdat.inc 文件中配置的“证书服务”没有启动或是无法访问,就有可能出现“Access denied”错误。
要解决此问题,请启动“证书服务”,或是对 certdat.inc 进行编辑,以便允许“Web 注册代理”访问正确的 CA。
尝试连接到“Web 注册页”的客户端收到错误信息“服务不可用”。 这说明 Web 应用程序没有启动。 出现这一错误的原因是管理员关闭了 CertSrv 应用程序,或是应用程序池由于故障无法启动。
在“Web 注册代理”事件查看器系统日志中,您可能会注意到以下事件。
Event Type: Warning Event Source: W3SVC Event Category: None Event ID: 1057 Date: 3/22/2004 Time: 12:06:43 PM User: N/A Computer: CAPROXY Description: The identity of application pool 'CertSrv' is invalid, so the World Wide Web Publishing Service can not create a worker process to serve the application pool. Therefore, the application pool has been disabled.
在此事件后,将立即显示以下事件。
Event Type: Error Event Source: W3SVC Event Category: None Event ID: 1059 Date: 3/22/2004 Time: 12:06:43 PM User: N/A Computer: CAPROXY Description: A failure was encountered while launching the process serving application pool 'CertSrv'. The application pool has been disabled.
在本例中,极有可能是前面创建的服务帐户 (SPN<Servername>) 没有添加到“Web 注册代理”计算机上的 IIS_WPG 组中。 请参见“向 IIS_WPG 组中添加服务帐户”,以将服务帐户添加到 IIS 工作进程组中。 在将该帐户添加到该组中后,您必须手动启动应用程序池。 在问题解决之后,客户端将立即识别此更改。
在您尝试将证书注册为智能卡注册代理时,如果分配给您的 CA 的模板都不要求授权签名,则您可能会收到此错误。 证书模板在它的发行要求中必须要求签名用途。
如果作为注册工作站的计算机不是您的 Active Directory 林的域成员,也可能出现此错误。 您不能使用工作组成员的计算机,或是非信任 Active Directory 域成员的计算机。 没有在 Active Directory 中正确注册的注册工作站将会在它的“系统”事件日志中报告 DCOM 错误 10006 和错误 10021。
如果注册代理导航到“智能卡证书模板注册工作站”,则证书模板可能不能如常使用。 出现此错误可能有几个原因。 一个常见的问题就是当需要具有多个签名的自定义模板时。 要解决此问题,请参见以下网址的 Microsoft 知识库文章提供的解决步骤: http://support.microsoft.com/?id=313629
另一个常见的问题就是智能卡模板版本 2 在“证书模板 MMC 管理单元”的“处理申请”选项卡中不包含适当用途。该用途必须是“签名和智能卡登录”,模板才会出现在“Web 注册页”上。
有关更多的故障排除帮助信息,请应用“找不到任何证书模板”中的故障排除步骤。 您无权申请 ...
如果您使用自定义“加密服务提供程序”(CSP) 通过“Web 注册支持”来注册证书,有两个先决条件必须满足。
| • | 必须对模板显式启用 CSP。 |
| • | CSP 的开发人员必须确保 PP_IMPTYPE 的 API 功能 CryptGetProvParam 返回 CRYPT_IMPL_REMOVABLE。 有关此功能的更多信息,请访问 MSDN 库,并搜索此功能的名称。 |
若要对模板启用 CSP,则使用“证书模板 MMC 管理单元”(certtmpl.msc) 进行证书模板管理的计算机必须能够访问 CSP。 要将 CSP 添加到模板中,请执行以下步骤。
1. | 以具有模板管理权限的用户身份登录到用于证书模板管理的计算机中。 默认情况下,只有“企业管理员”组成员可以维护证书模板。 |
2. | 要验证在您的本地系统中是否正确注册了自定义 CSP,请在命令行提示符处运行以下命令。 certutil -csplist |
3. | 要打开证书模板 MMC 管理单元,请在命令行提示符处运行以下命令。 Certtmpl.msc |
4. | 在 MMC 管理单元的右窗格中,选择将要用于使用自定义 CSP的证书注册的模板。 |
5. | 在操作菜单上,选择属性以打开模板的属性。 |
6. | 在处理申请选项卡上,单击 CSP。 |
7. | 自定义 CSP 应出现在 CSP 列表中。 选中 CSP 的复选框,然后单击确定两次以关闭“属性”窗口。 |
对于任何将要使用自定义 CSP 的证书模板,必须重复步骤 2 到步骤 5。
要解决此问题,请参见以下网址的 Microsoft 知识库文章: http://support.microsoft.com/?id=262262
此意外错误也可能以错误 0x800706BA 的形式出现在 Web 注册工作站。 同时,作为 Web 注册工作站的计算机也会在它的系统事件日志中记录 DCOM 错误 10009。
在注册代理需要智能卡证书才能登录,但使用了存储在不同智能卡上的证书来签署证书申请时,就会显示此错误信息:“插入了太多相同类型的智能卡”。 请只插入一个用户智能卡,然后重试。
访问智能卡注册代理证书的“Web 注册页”的智能卡注册工作站控件认为证书位于与智能卡上的默认容器关联的密钥容器中。但是,如果默认容器与其他智能卡上的登录证书关联,则访问注册代理证书将会失败。
如果登录证书和注册代理证书必须位于相同的智能卡上,我们建议您为可用于证书注册和智能卡登录的注册代理注册一个证书,并使用此证书。
是的。 您可以根据需要自定义“Web 注册页”。 有关更多信息,请参见 Microsoft 网站,地址是:
http://msdn.microsoft.com/library/en-us/security/security/customizing_the_certificate_services_web_enrollment_pages.asp
不提供。很抱歉,“Web 注册页”没有本地化版本。 所有“Web 注册页”都只提供英文版本。
不可以。默认情况下不能实现此功能。 您必须自定义“Web 注册页”才能使用此功能。 或者,您也可以通过高级“Web 注册页”提交 PKCS#7 申请。
以本地管理员组成员身份登录的用户可以申请当前计算机的计算机证书。 通过“高级证书申请”页面申请证书时,必须选中“将证书保存在本地计算机证书存储中”复选框。 不过,并非所有计算机机证书模板都可以通过“Web 注册支持”申请。 您可以使用“IPsec (offline)”或“Webserver ”模板发放计算机证书,因为这两个模板都允许客户端在申请中提供使用者信息。 计算机模板版本 1 只能和“证书 MMC 管理单元”共用。
在“Web 注册支持”的默认实现中,没有任何办法限制注册代理为任何用户申请证书。 要实现此功能,需要自定义“Web 注册页”。
一般说来,密钥存档要求支持密钥存档的证书服务提供商。 预计未来智能卡 CSP 将会支持此功能。
Certutil 是一个命令行工具,它具有非常丰富的功能集,对于故障排除尤有帮助。 “Windows Server 2003 管理工具包”中包含最新版的 certutil.exe。若要在 Windows 2000 计算机上安装该工具,必须先在 Windows XP 或 Windows Server 2003 系统上安装“Windows Server 2003 管理工具包”,因为该工具不能直接安装在 Windows 2000 计算机上。
“Windows Server 2003 管理工具包”可以从以下地址下载:
http://www.microsoft.com/downloads/details.aspx?FamilyID=fe6a573c-11ff-4cb6-be2e-9b6f2164c54a&DisplayLang=en
要在 Windows 2000 系统上安装该工具,请执行以下步骤。
重要说明:将新文件复制到非 Windows Server 2003 计算机上后,计算机上就会有这些文件的两个版本。 请不要闪出本地安装的文件,因为其他程序(例如“证书 MMC 管理单元”)依赖于这些本地版本。 并且,不要通过 regsvr32.exe 命令在 Windows 2000 系统上注册 certcli.dll 和 certadm.dll。
1. | 登录到运行 Windows XP SP1 或 Windows Server 2003 的计算机。 | ||||||
2. | 安装“Windows Server 2003 管理工具包”。 | ||||||
3. | 将以下文件复制到可移动媒体中,例如磁盘。
| ||||||
4. | 注销计算机。 | ||||||
5. | 令 Windows 2000 计算机可访问可移动媒体。 | ||||||
6. | 以管理员身份登录 Windows 2000 ,并创建一个新的目录来存储这些文件。例如:%HOMEDRIVE%\W2K3AdmPak。 注意:不应在系统搜索路径中包含此路径,以避免与计算机上已存在的工具版本发生冲突。 | ||||||
7. | 从可移动媒体中,将四个文件复制到新创建的目录中。 | ||||||
8. | 注销 Windows 2000 计算机。 |
随着此白皮书的全面论证,Windows Server 2003 为分布式环境中的证书注册提供了一个强健而灵活的平台,以及高水平的网络安全性。 本白皮书主要探讨如何在混合 Windows 版本的环境中实现 CA 和约束委派机构。 但是,管理员可能还需要使用概念和故障排除信息,以便在安全网络(客户端/服务器通信仅限于少数端口)中设置他们的证书注册结构。
有关进一步信息,请参见以下资源。