Windows 2000 PKI 组件
图 1 给出了 Windows 2000 PKI 组件的顶层视图。这是一个逻辑视图,并不是指独立服务器的物理需求;事实上,很多功能都可能合并到一个单服务器系统中。Microsoft 证书服务是 PKI 的一个重要组成部分。用它可以部署一个或多个企业 CA。这些 CA 支持证书的颁发和吊销。它们与 Active Directory 集成在一起,提供 CA 位置信息和 CA 策略,并允许发布证书和吊销信息。
PKI 并未取代原有基于域控制器 (DC) 和 Kerberos 密钥分发中心 (KDC) 的 Windows NT 域信任和身份验证机制。而是与这些服务配合使用,增强了性能,使应用程序得以方便地扩展,以满足外部网和 Internet 的需求。尤其值得一提的是,PKI 满足了对于可扩展的分布式标识和身份验证、完整性和保密性的需求。
图 1 Windows 2000 公钥基础结构组件
在运行 Windows NT 的工作站和应用程序服务器,以及运行 Windows 95 和 Windows 98 的工作站上,均支持创建、部署和管理基于 PK 的应用程序。Microsoft CryptoAPI 是这些服务的基石。它为可安装的加密服务提供程序 (CSP) 的加密功能提供了一个标准接口。这些 CSP 可能是基于软件的,或利用加密硬件设备的程序,它们能够支持各种算法和密钥强度。如图中所示,一种可能基于硬件的 CSP 可支持智能卡。CSP 与 Windows 2000 一起发行并利用与 Microsoft PC/SC 兼容的智能卡基础结构的例子很多(请参见 http://www.Microsoft.com/smartcard/ 以及 http://www.smartcardsys.com / )。
在加密服务的上层是一组证书管理服务。这些服务支持 X.509 v3 标准证书,提供永久存储、枚举服务以及解码支持。最上层是用于处理标准的工业消息格式的服务。这些服务主要是用来支持 PKCS 标准(请参见 http://www.rsa.com/ )以及发展中的 IETF(Internet 工程任务任务组― http://www.ietf.org /)PKIX(公钥基础结构 X.509)草案标准。
其他服务使用 CryptoAPI,为应用程序开发人员提供其他功能。安全信道 (schannel) 使用工业标准 TLS 和 SSL 协议,来支持网络身份验证和加密。可用 Microsoft WinInet 接口(与 HTTP 协议 (HTTPS) 一起使用)访问这些服务,也可通过 SSPI 接口与其他协议配合使用这些服务。Authenticode 支持对象签名和验证。这虽然也可用于其他环境,但主要用于确定 Internet 下载组件的来源和完整性。还支持通用智能卡接口。以上这些特点已用于将加密智能卡以一种与应用程序无关的方式进行集成,这是集成在 Windows 2000 中的智能卡登录支持的基础。
图 2 公钥应用程序服务
证书颁发机构
Microsoft 证书服务包含在 Windows NT Server 5.0 中,它提供一种方法,使企业能够方便地建立 CA,以满足其商业需求。证书服务包含一个默认策略模块,它适于将证书颁发给企业实体(用户、机器或服务)。其中包括请求实体的标识,以及验证该域 PK 安全策略是否接受所请求的证书。要考虑到解决其他策略,或要将 CA 扩展成支持各种外部网或 Internet 方案时,对其进行相应的修改或改进也是很容易的。因为证书服务是基于标准的,所以它为异构环境中启用 PK 的应用程序提供了广泛的支持。
在 PKI 中,可以方便地支持企业 CA 以及外部 CA,例如,与其他单位或商业服务提供程序相关的 CA。这样,企业就可以根据商业需要来调整环境了。
Windows 2000 PKI 采用层次结构的 CA 模型。其优点是:具有可扩展性,管理方便,并且与很多商业和第三方 CA 产品有一致性。最简单的形式是,CA 层次结构仅由一个 CA 组成;但通常一个层次结构会包含多个 CA,并明确定义了父子关系(图 3);正如图中所示,可能还存在多个不连续的利益层次结构。并不要求所有 CA 共享一个公用顶层父 CA(或根 CA)。
这一模型中,子 CA 由父 CA 颁发的证书来“验证”,该证书将一个 CA 的公钥与其标识和其他基于策略的属性绑定到一起。层次结构顶端的 CA 通常称为“根 CA”。下属 CA 通常称为“中级 CA”或“颁发 CA”。在本文中,“颁发 CA”指的是颁发最终实体证书的 CA。“中级 CA”不是指根 CA,而是指仅验证其他 CA 的 CA。
图 3 证书颁发机构层次结构
这一模型的主要优点就是:验证证书只需要对少数根 CA 建立信任即可。同时,它对颁发 CA 的数量要求更为灵活。支持多个颁发 CA 有许多实际的原因。包括:
用法 ? 可基于多种用途颁发证书,例如,安全电子邮件、网络身份验证等等。颁发的用途不同,其策略也会有所不同,对其进行分别处理是策略管理的基础。
组织划分 ? 根据组织中实体角色不同,颁发证书策略也不相同。仍然可以创建颁发 CA,区分和管理这些策略。
地理划分 ? 组织可能在多个物理站点拥有实体。这些站点间的网络连接决定了需要多个颁发 CA,以满足可用性要求。
这种 CA 层次结构还为管理提供了好处,包括:
可以灵活配置 CA 安全环境(密钥长度、物理保护、防止网络攻击的保护等),以保持安全性和可用性之间的平衡。例如,对于根 CA,可使用特殊用途的加密硬件,把它放到物理上安全的区域,或在脱机模式下运行。出于成本或可用性的考虑,它可能并不适于颁发 CA。
可频繁更新颁发 CA 密钥和/或证书(泄密风险最高),而无须更改已建立的信任关系。
可以去掉 CA 层次结构的某一部分,而不会影响已建立的信任关系。例如,可以很容易地拒绝或吊销一个与特定地理站点关联的颁发 CA 证书,而不会影响组织中的其他部分。
CA 层次结构一般是静态的,但并不要求必须如此。在给定根 CA 下,可以方便地添加或删除颁发 CA。另外,可由一个根 CA 颁发证书,证明另一个根 CA 是它的中级 CA,这样,就可以合并原有的 CA 层次结构。但是,在合并之前,需要慎重考虑可能会引起的策略不一致性,还要考虑可能会编入原有证书的“深度”限制的影响。
部署 Microsoft 证书服务是一个非常简单、直观的操作。创建 CA 前,最好先建立域。然后,建立一个或多个企业根 CA。在证书服务安装过程中,管理员就是按这样的步骤进行安装的。安装过程的要点包括:
选择主服务器 ? 根 CA 可以在任何 Windows NT Server 平台上运行,包括 DC。在此过程中,必须考虑物理安全性要求、预期负载、连接性要求等因素。
命名 ? CA 名称与其证书绑定在一起,因此,不能修改。应该考虑组织命令规则以及将来需要,以区分不同的颁发 CA。
密钥生成 ? CA 的公钥对将在安装过程中生成,它是该 CA 所独有的。
CA 证书 ? 对于根 CA 而言,安装过程会用 CA 的公钥-私钥对,自动生成一个自签名的 CA 证书。对于子 CA,可以选择生成一个证书请求,并提交到中级 CA 或根 CA。
Active Directory 集成 ? 在安装过程中,关于 CA 的信息会写入 Active Directory 中的 CA 对象。它给域客户提供了可用的 CA 以及颁发证书类型的信息。
颁发策略 ? 企业 CA 安装程序会自动为该 CA 安装和配置 Microsoft 提供的企业策略模块。已授权的管理员可对该策略进行修改,虽然大多数情况下无需这样做。
建立根 CA 后,就可以安装此根 CA 所属的中级或颁发 CA 了。安装策略的唯一重大差别是:生成的证书请求是提交给根 CA 还是中级 CA。此请求可以自动路由到联机 CA(可通过 Active Directory 定位这些 CA),或在脱机情况下手动路由。在这两种情况下,都必须先把生成的证书安装到 CA,CA 才能开始工作。