Microsoft Windows XP Professional 和 Microsoft Windows Server 2003 提供了一个集成的公钥基础结构 (PKI),使您能够在 Internet、extranet、intranet 和应用程序间安全地交换信息。本白皮书为 PKI 管理员提供了执行 PKI 交叉认证、部署桥证书颁发机构 (CA) 和了解如何在 Windows Server 2003 中实现限定从属的技术参考和规划指南。
| 简介 | |
| 概述 | |
| 了解约束 | |
| 限定从属部署方案 | |
| 演练 | |
| 附录 A – Policy.Inf | |
| 附录 B – CAPolicy.inf | |
| Appendix C – CMC Dump of a Qualified Subordination Request |
限定从属是对证书颁发机构层次结构执行交叉认证的过程,该认证过程使用基本约束、策略约束、命名约束和应用程序约束来限制应从合作伙伴 CA 层次结构处或同一组织内的次要层次结构处接受哪些证书。在 Windows 2000 网络中无法实现 CA 层次结构上真正意义的交叉认证。唯一可行的备用方案是定义信任特定 CA 和限制证书使用的证书信任列表 (CTL)。通过使用限定从属,CA 管理员可以明确定义 CA 管理员组织信任的合作伙伴 PKI 所颁发的证书。限定从属还提供了在组织中根据策略规范划分和控制证书颁发的方法。本白皮书中将分别提供一些示例来对这两种方案进行阐释。
在本白皮书中,术语“限定从属”是指在实现基本约束、名称约束、应用程序约束、策略约束或混合约束的两 CA 间进行的交叉认证。有了这种认证,便可以根据 RFC 2459 以及后来 RFC 3280 中定义的规则和定义,来限制应信任合作伙伴或次要 CA 层次结构中的哪些证书。
本白皮书的内容范围是描述使用限定从属控制多组织 PKI 层次结构间关系的方法。本白皮书描述了为定义 PKI 层次结构间关系而实现的各种约束,提供了限定从属方案以及执行限定从属过程的演练。
应用程序约束 限制限定从属配置中证书用途的约束。提供的证书中必须包含要求合作伙伴组织接受的应用程序约束。
颁发机构信息访问 (AIA) 包含可在其中检索颁发 CA 证书的 URL 位置的证书扩展。AIA 扩展可以包含 HTTP、FTP、LDAP 或 FILE URL。
颁发机构密钥标识符 (AKI) 供证书链接引擎使用的证书扩展,证书链接引擎可以使用该证书扩展来确定应使用哪个证书来签名所提交的证书。AKI 可以包含颁发者名称和序列号、公共密钥信息,或根本不包含任何信息。将证书 AKI 扩展中的信息与 CA 证书使用者密钥标识符 (SKI) 扩展中的信息进行匹配,即可以构建证书链。
CaPolicy.inf 一个配置文件,存储在 %SystemRoot% 文件夹中,在安装证书和续订 CA 证书时需用该文件定义 CA 的配置设置。
CRL 分发点 (CDP) 指示可从何处检索 CA 证书吊销列表的证书扩展。该扩展可包含多个 HTTP、FTP、File 或 LDAP URL,用于 CRL 的检索。
证书信任列表 (CTL) 限制证书使用的一种方法,该方法限制与指定 CA 相链接的证书仅可在一段时间内使用,或仅可用于特定用途。这种方法在 Windows 2000 网络中使用较为广泛。在 Windows Server 2003 环境中,限制组织间证书用途的首选方法是限定从属。
证书吊销列表 (CRL) 由 CA 颁发的数字签名列表,其中包含该 CA 颁发的已被吊销的证书的列表。此列表包含证书的序列号、证书吊销日期和吊销原因。应用程序可以执行 CRL 检查,以确定所提交证书的吊销状态。
交叉认证 为与两个根 CA 相链接的 CA 颁发从属 CA 证书的过程。
交叉证书颁发机构证书 一个 CA 为另一个 CA 的签名密钥对(也就是为另一个 CA 的公共验证密钥)颁发的证书。
名称约束 名称约束,用于限制向 CA 所提交的证书申请中允许或排除的名称。
颁发策略约束 策略约束,用于定义受组织信任的证书所必须遵循的颁发实践。组织中的颁发策略对象标识符 (OID) 将被映射到合作伙伴组织中相匹配的对象标识符,以便于您的 PKI 能够识别所提交证书中的对象标识符。
Policy.inf 一个配置文件,在定义限定从属时需用该文件来定义要对 CA 证书应用的约束。
公钥基础结构 (PKI) PKI 为组织提供了在公共网络上使用公钥加密安全交换数据的能力。PKI 由颁发数字证书的 CA、存储证书的目录(包括 Windows 2000 和 Windows Server 2003 中的 Active Directory)以及颁发给网络上安全实体的 X.509 证书组成。PKI 提供了基于证书的凭据验证,并确保凭据不会被吊销、破坏或修改。
限定从属 用基本约束、名称约束、应用程序约束和颁发策略约束配置交叉认证,以控制合作伙伴组织可以信任的证书的过程。
限定从属允许组织将其 PKI 信任层次结构扩展到其他组织和同一组织中的次要层次结构。限定从属有时也被称为交叉认证。虽然在 Windows 2000 网络中也可以使用 CTL 来 PKI 信任扩展,但是,在定义两组织间的限制方式上,CTL 有一定的局限。而限定从属则提供了一种更为灵活,且更易于管理的信任机制。
在使用限定从属实现 PKI 信任扩展时,每个限定从属 CA 均可定义一些规则来执行以下操作:
| • | 定义 PKI 层次结构将为其颁发和接受信任证书的命名空间 |
| • | 指定限定从属 CA 所颁发证书的可接受用途 |
| • | 定义颁发策略,限定从属 CA 在颁发证书时必须遵循这些策略,颁发的证书才有效。 |
| • | 在单独的证书层次结构间创建托管信任 |
Windows Server 2003 Enterprise Edition 提供了在 CA 间配置限定从属所必需的工具,从而两组织可以定义两组织间证书的信任方式。这些工具包括:
| • | 第 2 版的证书模板 允许 CA 管理修改证书模板,以满足其各自的业务目标。限定从属需要使用第 2 版的证书模板来包括策略约束。对第 2 版模板所做的修改可以包括:
| ||||||
| • | 交叉证书颁发机构证书 由一个 CA 向另一个 CA 颁发,以便在两个证书间建立限定从属的第 2 版证书模板。在签名交叉 CA 证书时使用的证书将强制执行证书中定义的约束。 | ||||||
| • | 限定从属签名证书 这是必须手动创建的第 2 版证书模板;它包含限定从属应用程序策略 OID。本证书模板将对证书持有者是否获准签名交叉证书颁发机构证书进行验证。 | ||||||
| • | Certutil.exe 作为证书服务的一部分进行安装的命令行程序。该程序用于转储和显示 CA 配置信息、配置证书服务、备份和还原 CA 组件,以及验证证书、键对和证书链。 | ||||||
| • | Certreq.exe 作为证书服务的一部分进行安装的命令行程序。该程序用于从 CA 申请证书。在限定从属中,常用 certreq.exe 向颁发证书的 CA 申请交叉证书颁发机构证书。 |
限定从属的关键是对限定从属 CA 或与限定从属 CA 相链接的 CA 所颁发的证书进行限制,通过约束来限制受组织信任的证书。这一目标可通过定义基本约束、名称约束、颁发策略约束或应用程序策略约束的方法来实现,具体的实现方法有两种:
| • | 在安装 CA 的过程中定义约束。通过包含下面 CAPolicy.inf 文件中定义的各个部分,即可在安装 CA 的过程中或在续订证书的过程中于 CA 处定义基本约束、名称约束、颁发策略约束和应用程序策略约束。 |
| • | 还可以在申请交叉证书的过程中,通过 Policy.inf 文件来定义约束。Policy.inf 文件可以定义要在交叉认证证书(用于定义限定从属)中实施的约束。 |
附录 A 包含一个 Policy.inf 文件的示例。附录 B 包含一个 CAPolicy.inf 文件的示例。
注意: 在 RFC 2459 第 4.2 节“标准证书扩展”中定义了各种各样的约束。
注意: 有关证书链引擎在构建证书链时如何使用约束信息的更多信息,请参见微软白皮书“疑难解答证书状态和吊销”:http://www.microsoft.com/technet/security/topics/crypto/tshtcrl.mspx
基本约束允许 CA 管理员限制证书链的路径长度。您可以指定一个基本约束,以定义在应用基本约束的 CA 下允许存在最大 CA 数量。例如,如果将路径长度定义为零,CA 则只能够颁发末端实体证书,而不能颁发 SubCA 证书。
图 1 显示了一个应用基本约束的 CA,其路径长度被限制为 2。
该基本约束可确保与 CorpCA 相连的信任证书的最大路径长度为两层。这表示在应用基本约束的 CA 下只能存在两层的 CA。在此示例中,AsiaCA 受到限制,只能颁发受信任的末端实体证书。因此无论是向 JapanCA 颁发任何证书,还是从 JapanCA 向他处颁发任何证书,都会使该证书链的验证失败,因为这会导致路径长度大于 2。无论任何时候,当一个 CA 向另一个 CA 颁发证书时,都可以减小路径的长度,但决不能增加允许的路径长度。
注意: 在 RFC 2459 的第 4.2.1.10 节中完整定义了基本约束。
最佳操作 可应用于基本约束的一项最佳做法是只限制从属 CA 证书中的路径长度,而不限制根 CA 证书中的路径长度。通常采用这种做法的原因是根层次结构的更改需要对层次结构进行彻底地重新部署,而且根证书所需的路径长度可能会有所变化。因此,在上例中,用 PathLength = 1 来颁发 RegionCA 证书,而在根 CA 证书中却未定义长度。
名称约束允许您为定义了限定从属的 CA 所颁发的证书指定允许的命名空间或排除的命名空间。当限定 CA 收到申请时,会将使用者与使用者替换名称字段中显示的名称与配置的名称约束进行比较,以确定该命名空间是允许的命名空间还是被排除的命名空间。换言之,CA 将强制执行 CA 证书中定义的所有约束。
注意: 如果申请中提供的名称未出现在约束列表中,限定 CA 便会拒绝该申请。证书申请中的所有名称都必须出现在允许的命名空间中,且待发证书中不能有任何一个证书的名称出现在被排除的命名空间中。
名称约束使您可以控制组织中每个 CA 所管理的命名空间,以及其他组织中可以信任的命名空间。在部署限定从属 CA 时,必须仔细考虑允许颁发 CA 的命名空间,不过在有些情况下,更要注意那些您希望限定从属 CA 支持的命名空间。
例如,您在配置组织和合作伙伴组织之间的限定从属时,通常不希望合作伙伴的 CA 基础结构颁发的证书中包含您组织命名空间中的名称。切记,包含组织 UPN 的有效证书会以 UPN 作为属性映射到用户帐户。由哪个 CA 颁发证书并不重要,重要的是证书一定要链接到 NTAuth 存储区中的 CA 证书。使用名称约束可确保为合作伙伴 CA 层次结构颁发的证书中不会包括您的命名空间以及您命名空间的任何可识别形式。
有些情况下,会同时存在“允许的名称”和“排除的名称”这两种名称约束,而“排除的名称”约束将始终保持优先权。例如,如果针对命名空间 .microsoft.com 创建一个允许的 DNS 名称约束,同时针对 .subdomain.microsoft.com 创建一个排除的 DNS 名称约束,那么将拒绝所有的 subdomain.microsoft.com 证书,而除此之外的 microsoft.com 命名空间则是允许的。
重要:微软客户端对具有名称约束的证书进行验证时所采用的默认策略是必须显式允许所有名称。例如,如果名称约束中未将电子邮件名称指定为允许的类型,而证书申请中却包含了电子邮件名称,那么该申请便会遭到拒绝。在注册表中配置 CA 策略能够缓和此策略,以隐式允许未在名称约束扩展中定义的名称。
只有证书申请中的每个名称均与限定从属 CA 中配置的一个或多个允许名称约束相匹配时,才能够接受证书申请。换言之,如果证书申请同时包含 LDAP 可分辨名称格式和 UPN 格式的申请者名称,那么这两种名称都必须与允许的名称约束相匹配。如果其中一种名称不匹配,证书申请便会失败。
当在限定从属规则下向从属 CA 提交证书申请时,证书申请中的所有名称形式都必须在允许的命名空间中。此外,使用者名称绝不能出现在被排除的命名空间中。系统会对“允许的名称”约束和“排除的名称”约束分别进行处理。
限定从属 CA 遵循下列规则:
| • | 如果证书申请中的所有名称均与相应的允许名称约束成功匹配,证书申请则会成功。 | ||||||||||
| • | 如果证书申请中的任何名称与相应的排除名称约束成功匹配,证书申请则不会成功。 | ||||||||||
| • | 如果证书申请包含的名称既不与允许名称相匹配,也不与排除名称相匹配,则视该名称为排除名称,而申请也会失败。 | ||||||||||
| • | 将标识使用者实体的名称与限定从属 CA 的名称约束进行比较时,遵循以下规则:
在这个配置中,如果 CA 接收到包含 user1@northwindtraders.com 电子邮件名称的申请,该申请便会被拒绝。同样,如果使用者替换名称中包含 user1@northwindtraders.com,而使用者名称包含 CN=user1,OU=Contractors,DC=Microsoft,DC=Com 申请也会被拒绝。切记,每个使用者名称都必须与待发证书的名称约束完全匹配。以上提及的默认策略要求:如果不在证书颁发机构上配置名称约束,就必须定义所有名称。 |
注意: 如果没有指定允许或排除的名称,便会为这些名称约束格式创建一个通配符 (*) 名称约束。
当名称约束处理完成后,验证过程将产生下列一种结果:
| • | 允许 最终证书包含的名称在颁发者名称约束扩展中被作为允许的名称列出。 |
| • | 不允许 最终证书中包含的名称在颁发者名称约束扩展中未作为允许的名称列出。 |
| • | 排除 最终证书中包含的名称在颁发者名称约束扩展中被作为排除的名称列出。 |
| • | 未定义 颁发者证书没有列出特定名称类型(如目标名称或 IP 地址)的约束。 |
注意: 如果没有在 Policy.inf 文件中指定名称约束扩展,Windows Server 2003 CA 便会设置约束以允许特定名称类型的所有命名空间。
定义名称约束时,支持在 CAPolicy.inf 或 Policy.inf 中使用下列命名和寻址格式:
| • | 相对可分辨名称 |
| • | DNS 域名称 |
| • | 统一资源标识符 (URI) |
| • | 电子邮件地址和用户主体名称 (UPN) |
| • | IP 地址 |
其他名称约束形式可使用其他名称形式来强制执行,这些名称形式可由 UTF8 或 ASN.1 编码的名称和 OID 进行标识。其他名称可用于表示标准名称类型(例如 Rfc822Name、DNS 或 X.500 目录名称)之外的名称。它由一个 OID 和一个二进制 blob 组成。最为常见的“其他名称”是通用主体名称 (UPN) 名称,这种名称具有一个作为 OID 的常数 OID_NT_PRINCIPAL_NAME。第 2 版“域电子邮件复制”模板证书和第 1 版“域控制器”证书有一个使用者替换名称扩展,其中包含一个常数 OID_NTDS_REPLICATION,作为其他名称类型,还有一个作为 blob 的 GUID,表示 DC。在 Windows 2000 的其他名称约束中只有 UPN。而在 Windows Server 2003 中,其他名称约束得到了扩展,甚至可支持域控制器 GUID。下面是其他名称约束的语法,其中第一部分是 OID,其后跟有一个标识符,用于其后的数据编码是 UTF8、octet,还是 SN.1:
OtherName=1.2.3.4.99.100,{utf8}ssss
OtherName=1.2.3.4.99.101,{octet}ABCD
OtherName=1.2.3.4.99.102,"{asn}BAgAAQIDBAUGBw=="
OtherName=1.3.6.1.4.1.311.25.1
如果您用交叉林智能卡登录,而其他域具有 Windows 2000 域控制器时,那么在此方案下用这种表示法可能非常有用。在这种情况下,您可以提供一个额外的名称约束 "OtherName=1.3.6.1.4.1.311.25.1",以允许所有域电子邮件复制证书,并使用 DNS 名称约束限制命名空间。将域控制器的 GUID 限制为另一个名称从技术上讲是可行的,但只是并非泛型约束,而只是一个域控制器的特定约束。
名称约束一般在下列任一位置进行配置。创建新 CA 时,可以将 CAPolicy.inf 配置为强制执行名称约束,并以此方式为该 CA 定义名称约束。同样,如果创建限定从属 CA 证书,则可在 Policy.inf 文件中定义名称约束。在这两种情况下,均可以使用以下语法:
[NameConstraintsExtension] Include = NameConstraintsPermitted Exclude = NameConstraintsExcluded Critical = TrUe [NameConstraintsPermitted] DNS = "" email="" UPN="" [NameConstraintsExcluded] DNS = .nwtraders.com email = @nwtraders.com UPN = .nwtraders.com UPN = @nwtraders.com URI = ftp://.nwtraders.com DIRECTORYNAME = "DC=NWtraders, DC=com"
注意:[NameConstraintsExtension] 中的 critical = True 指示将这种扩展标记为关键。如果验证计算机无法解析该扩展,就必须拒绝该证书链。
相对可分辨名称可用于标识目录(如 Active Directory 或 X.500 目录)中存储对象的名称。使用相对可分辨名称可以对限定从属 CA 进行限制,使其只能将证书颁发给 Active Directory 中的特定用户或计算机。可分辨名称可以非常具体,在这种名称中,允许或排除的相对可分辨名称均引用一个特定的对象。或者,可分辨名称也可以是通配符值,以引用特定容器、域或组织单元中的所有对象。
名称约束必须包含在用于创建限定从属 CA 的 Policy.inf 文件中,或包含在安装新从属 CA 时使用的 CAPolicy.inf 文件中。表 1 显示了 LDAP 名称约束的一些示例,并定义了这些约束引用的对象。
表 1 名称约束示例
| 相对可分辨名称约束 | 包括 |
DC=example,DC=microsoft,DC=com | example.microsoft.com 域中的所有对象 |
CN=Users,DC=example,DC=Microsoft,DC=com | example.microsoft.com 域用户容器中的所有对象 |
CN=Brian Komar,CN=Users,DC=microsoft,DC=com | Microsoft.com 域用户容器中的用户对象 Brian Komar |
OU=Marketing,DC=Microsoft,DC=Com | Microsoft.com 域营销组织单元中的所有对象 |
CN=Servers,CN=Sites,CN=Configuration,DC=Microsoft,DC=Com | microsoft.com 林中的所有域控制器 |
OU=Domain Controllers, DC=Redmond,DC=Microsoft,DC=Com | Redmond.microsoft.Com 域中的所有域控制器。 |
“允许的名称”约束中的字符范围由 RDN 类型定义。大多数 RDN(例如 O=、OU=、CN= 等等)都支持国际 (UTF8) 字符,这里的 RDN 包括在 IA5 字符类型上支持的信息(DC=、C=、电子邮件等等)。相对名称约束将通过以下格式显示在允许或排除的名称约束中:
DIRECTORYNAME = "DC=NWtraders, DC=com"
DNS 名称约束将证书申请中包含的所有 DNS 名称与允许和排除的 DNS 名称约束列表进行比较。对于 LDAP 可分辨名称约束,证书申请中的名称必须与待发证书中的一个允许名称相匹配。
从属 CA 接受的 DNS 域名称必须遵循标准的 DNS 命名约定(在 RFC 1034 和 1035 中定义),并列出在所用 Policy.inf 或 CAPolicy.inf 文件中。因此,DNS 名称约束不能包含国际字符集。
在配置 DNS 名称约束时,可以指定特定的 DNS 主机名称(例如 host.example.microsoft.com),也可以指定 DNS 命名空间。例如,DNS 名称约束 .example.microsoft.com 指示所有主机的 DNS 名称均以 example.microsoft.com 结尾。前导句点 (.) 指示以 example.microsoft.com 结尾的所有 DNS 名称均与名称约束相匹配。
注意: 这并不包括 example.microsoft.com 前不带句点的主机。例如,在与名称约束 .example.microsoft.com 进行比较时,名为 ourexample.microsoft.com 的主机便不能与之匹配。
表 2 针对配置的 DNS 名称约束演示了提交 DNS 名称产生的结果。
表 2 评估 DNS 名称约束
| 提交的 DNS 名称 | DNS 名称约束 | 评估 |
www.example.microsoft.com | .example.microsoft.com | 匹配 |
www.south.example.microsoft.com | .example.microsoft.com | 匹配 |
example.microsoft.com | .example.microsoft.com | 不匹配 |
Ourexample.microsoft.com | example.microsoft.com | 不匹配 |
www.example.microsoft.com | example.microsoft.com | 匹配 |
重要:一定要仔细评估 DNS 约束。切记,所有“排除的名称”约束的优先级均高于“允许的名称”约束。例如,如果允许的名称约束为 .example.microsoft.com ,而排除的名称约束为 .microsoft.com,则来自 www.example.microsoft.com 的申请便会遭到拒绝。此 DNS 名称同时匹配排除的和允许的名称约束。因为在排除的名称约束上存在匹配,因此不会遵守允许的名称约束。
DNS 名称约束将使用以下格式显示在允许或排除的名称约束中:
DNS = .nwtraders.com
统一资源标识符 (URIs) 标识 Internet 上使用诸如 URL、FTP、HTTP、telnet、mailto、新闻和 gopher 等的资源。名称约束支持的 URI 命名约定必须遵守 RFC 2396 中指定的语法。
当限定从属 CA 验证 URI 名称时,URI 中的协议元素便会被忽略。例如,如果提交的 URI 是 http://www.example.microsoft.com,而 URI 名称约束是 URL=ftp://.example.microsoft.com,则将在主机名称 www.example.microsoft.com 和名称约束 .example.microsoft.com 之间进行实际比较。在这种情况下,即便是协议不同,所得结果也可能是匹配。
对于 DNS 约束,URI 约束可以引用主机或域。如果 URI 约束中包含了前导句点,域名称则必须包含名称约束中定义的整个语法。例如,如果 URI 约束是 .example.microsoft.com,则 west.example.microsoft.com 和 east.example.microsoft.com 都会匹配。
URI 名称约束的最常见应用是对 Web Server 证书申请的验证,在这种证书申请中将提交 Web 服务器 URL。例如,如果 Web Server 证书申请有一个名称 http://www.microsoft.com,而且限定从属 CA 允许的 URI 名称约束是 URL=http://www.microsoft.com,那么此 URI 约束便会允许 Web Server 证书的证书申请。
URI 名称约束使用以下格式显示在允许或排除的名称约束中:
URL = "http://.microsoft.com"
RFC 822 和电子邮件约束必须遵守 RFC 822 命名约定,还必须使用 IA5 编码字符串。用户主体名称 (UPN) 使用相同的语法,但用 UTF8 进行编码。虽然 RFC 822 名称、UPN、电子邮件地址均使用相同的语法,但在 Policy.inf 的名称约束列表中必须分别为其提供不同的示例,以区分使用电子邮件地址的申请和使用 UPN 名称的申请。
在定义 RFC 822、电子邮件或 UPN 约束时,可以为个别的地址或以特定域结尾的多个地址指定约束。
例如,要为 Northwind Traders 的 Joe Smith 创建一个电子邮件地址名称约束,则可以为 jsmith@nwtraders.com 创建一个电子邮件地址约束。要为 Northwind Traders 的所有电子邮件用户创建一个名称约束,则可以将电子邮件约束设置为 @nwtraders.com。只需将与号左侧留空,即可使电子邮件约束成为一个表示 nwtraders.com 域中所有电子邮件地址的通配符。
表 3 显示了 RFC822、电子邮件和 UPN 约束的一些示例及其各自的评估方法。
表 3 RFC 822、电子邮件和 UPN 约束评估
| 提交的地址 | UPN/电子邮件地址约束 | 评估 |
jsmith@nwtraders.com | jsmith@nwtraders.com | 匹配 |
bjsmith@nwtraders.com | jsmith@nwtraders.com | 匹配 |
jsmith@nwtraders.com | @nwtraders.com | 匹配 |
jbsmith@nwtraders.com | bjsmith@nwtraders.com | 不匹配 |
注意:在名称约束列表中,UPN 名称约束始终要作为两个单独的条目输入。一个条目应包括与号字符(例如 @nwtraders.com);第二个条目应用句点 (.) 替换与号,因此本条目应为 .nwtraders.com。这种格式允许 subdomain.nwtraders.msft UPN 情况的发生。
电子邮件和 UPN 名称约束使用以下格式显示在允许或排除的名称约束中:
email = @nwtraders.com UPN = .nwtraders.com UPN = @nwtraders.com
IP 地址约束允许指定某 CA 可从限定从属 CA 成功接收证书的特定 IP 地址或 IP 地址范围。约束中 IP 地址的格式必须遵守 RFC 791(适用于 IPv4 地址)或 RFC 2460。
限定从属 CA 收到证书申请时,会将证书申请中的源 IP 地址和 IP 地址约束进行比较,以确定该 IP 地址是名称约束所允许的 IP 地址还是要排除的 IP 地址。
若要指定一个 IP 地址范围,必须在每个约束中同时指定 IP 地址及其相关的子网掩码。例如,如果要为 192.168.3.0 网络创建一个 IP 地址约束,那么该约束则应为 192.168.3.0/255.255.255.0。
IP 地址约束使用以下格式显示在允许或排除的名称约束中:
IPADDRESS = 192.168.3.0/255.255.255.0 IPADDRESS = 192.168.2.254/255.255.255.255 IPADDRESS = 172.16.8.0/255.255.248.0
第一个约束包括 192.168.3.0 网络中的所有计算机。第二个约束是主机特定的约束,只包括 IP 地址为 192.168.2.254 的主机。最后一个约束是一个无类别 Internet 域路由 (CIDR) 示例,包括地址 172.16.8.1 和 172.16.15.254 间的所有主机。
颁发策略用于标识贵组织对另一组织 CA 层次结构所颁发证书中提供身份的信任程度。例如,某个颁发策略可能描述只信任在网络管理员面对面会议中颁发的证书,例如智能卡证书的颁发。每个颁发策略均由 OID 进行描述。在所颁发的证书中包含颁发策略 OID 表示该证书的颁发满足与颁发策略 OID 相关联的颁发要求。
注意: 颁发策略是微软在 RFC 2459 的 4.2.1.5 部分中定义的证书策略术语,并包含在证书的 certificatePolicies 扩展中。
对于特定的证书模板,您可以定义一个或多个要包含在所颁发证书中的颁发策略 OID。有一个特殊的颁发策略所有颁发策略 OID,该策略通常为 CA 证书保留,它指示颁发策略包含所有其他的颁发策略。
Windows Server 2003 包括四个预定义的颁发策略:
| • | 所有颁发 (2.5.29.32.0) 所有颁发策略指示颁发策略包含所有其他的颁发策略。通常,此 OID 只分配给 CA 证书。 |
| • | 低确定性 (1.3.6.1.4.1.311.21.8.x.y.z.1.400) 低确定性 OID 一般表示不包含任何额外安全要求的颁发证书。OID 的 x.y.z 部分是一个随机生成的数字序列,它对每个 Windows Server 2003 林都是唯一的。 |
| • | 中确定性 (1.3.6.1.4.1.311.21.8.x.y.z.1.401) 中确定性 OID 一般表示可能具有额外的颁发安全要求的证书。例如,在与智能卡颁发者面对面会议中颁发的智能卡证书可视为中确定性的证书,并包含中确定性的 OID。OID 的 x.y.z 部分是一个随机生成的数字序列,它对每个 Windows Server 2003 林都是唯一的。 |
| • | 高确定性 (1.3.6.1.4.1.311.21.8.x.y.z.1.402) 高确定性 OID 一般表示包含最高安全性要求的颁发证书。例如,密钥恢复代理证书允许证书持有者从 Windows Server 2003 Enterprise Edition CA 恢复私钥资料。密钥恢复代理证书的颁发则可能需要额外的后台检查和指定审批者的数字签名。OID 的 x.y.z 部分是一个随机生成的数字序列,它对每个 Windows Server 2003 林都是唯一的。 |
| • | 最佳操作 从技术角度看,可以将颁发策略添加到运行 Enterprise Edition 的 Windows Server 2003 证书颁发机构所颁发的任何第 2 版模板中。但是,最佳操作是在 Policy.inf 文件中为限定从属 CA 应用颁发策略,以确保 CA 策略的一致性。这是为了避免不小心颁发包含不同策略的模板。 |
注意: 根 CA 自动表明已定义了所有颁发策略。要了解在证书链中评估策略的方式,请参见“证书状态和吊销”白皮书:http://www.microsoft.com/technet/security/topics/crypto/tshtcrl.mspx
如果组织颁发了现有 OID,则很可能用于此用途。此外,您还可以创建自己的 OID,以表示自定义的颁发策略。例如,具有采购方/销售方关系的两个组织可以定义自定义的 OID,以表示特定采购数量的数字签名证书。例如,为 100,000 美元和 500,000 美元间的采购定义 OID,再为大于 500,000 美元的采购定义另一个 OID。然后应用程序可以使用这些 OID 来识别人员是否具有特定数量采购的适当签名颁发机构。
[PolicyStatementExtension] Policies = HighAssurancePolicy, MediumAssurancePolicy, LowAssurancePolicy CRITICAL = FALSE [HighAssurancePolicy] OID = 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1.402 [MediumAssurancePolicy] OID = 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1.401 [LowAssurancePolicy] OID = 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1.400
注意:只有 Windows XP 和 Windows Server 2003 客户端能够识别颁发策略扩展。如果将扩展标记为关键,CAPI 便会将扩展传递给应用程序。当调用方应用程序用特定策略提供程序调用扩展时,调用方应用程序需能理解该扩展。该行为会随应用程序的不同而不同。如果是在 Windows 2000 的 Outlook 中,由于程序不理解该扩展,一个关键的颁发策略便会导致 Outlook 生成错误。但在 Windows XP 上,由于程序可以识别颁发策略,便不会引发错误。
在使用颁发策略的两个 CA 间配置限定从属时,必须映射两组织间的 OID。策略映射可以确定一个组织中的哪些 OID 与另一个不同组织 CA 层次结构中定义的 OID 等价。策略映射通过创建交叉认证证书,允许在一个组织中识别于另一个组织中的证书中生成的 OID。
策略映射可确保在合作伙伴组织颁发的证书中只允许来自合作伙伴组织的授权 OID。策略映射会将合作伙伴组织的 OID 与在组织 PKI 层次结构中定义的 OID 相关联。
图 2 显示了在颁发交叉证书以允许在两个 CA 层次结构间使用证书时,如何在 Policy.inf 文件中定义策略映射。
在此图中,用已分配了 OID 1.3.6.4.1.311.21.8.1.124 的名为 MillionDollar 的颁发策略配置了 Northwind Traders。此颁发策略映射至 Contoso Consulting CA 中名为 BigOrder 的颁发策略。
如果 Northwind Traders CA 用 MillionDollar 策略之外的颁发策略颁发证书证书,Contoso CA 就会拒绝该证书,因为策略并没有映射到批准的颁发策略 OID。
在创建交叉证书以链接两组织的 CA 层次结构时,必须在 Policy.inf 文件中包含图中所显示的代码,其中 Policy.inf 用于在每个 CA 处生成交叉认证证书。Policy.inf 文件位于颁发者 CA 处。映射的 OID 是来自使用者 CA 的 OID,它是合作伙伴组织匹配颁发策略的 OID。
在执行策略映射前,必须用颁发策略和关联的对象 ID 配置颁发者 CA。通过配置 CAPolicy.inf 文件,然后安装 CA,或使用配置的包含所需对象标识符的 CAPolicy.inf 文件续订 CA 证书,可完成这一操作,如下列代码示例所示:
[PolicyStatementExtension] Policies = HighAssurancePolicy, MediumAssurancePolicy, LowAssurancePolicy CRITICAL = FALSE [HighAssurancePolicy] OID = 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1.402 [MediumAssurancePolicy] OID = 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1.401 [LowAssurancePolicy] OID = 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1.400
在此示例中,在使用者 CA 中定义了高、中、低确定性的颁发策略。右键单击控制台树中的“证书模板”,然后从弹出菜单中选择“查看对象标识符”,可从“证书模板”控制台检索 OID。
注意: 附录 B 包含一个样例 CAPolicy.inf 文件。
使用 CAPolicy.inf 文件续订 CA 证书可确保在 CA 处定义颁发策略。此时,可以生成交叉证书,在两组织间执行策略映射。可以使用下列过程在两 CA 层次结构间执行限定从属:
1. | 确定要与之建立信任关系的组织。如果关系中存在的公司多于两个,那么必须成对定义信任关系。 |
2. | 通过与合作伙伴组织讨论,在信任关系中两组织使用的确定性级别间建立等价关系。 |
3. | 交换为信任关系中两组织所用的每个确定性级别定义的颁发策略对象标识符。 |
4. | 在每个 CA 的 Policy.inf 文件中映射各个组织的颁发策略对象标识符,并为组织中要安装的限定从属 CA 定义 CA 证书申请的策略约束。 |
5. | 安装带有策略、策略映射以及要在组织中应用的策略约束的限定从属 CA。 |
当组织中的某个用户或计算机(其中存在颁发 CA))收到组织中另一用户(其中存在使用者 CA)所签名的文件时,将用限定从属路径将证书链接到颁发 CA 中的根 CA。如果证书中颁发策略的对象标识符映射到组织中所需颁发策略的对象 ID,证书链则被视为有效。如果颁发 CA 组织中的用户或计算机收到包含非映射对象标识符的证书,验证过程则会为证书链分配一个较小的值,而且应用程序通常会拒绝该证书。
通过定义参数可以进一步限制策略,这些参数可以定义在限定从属中定义的颁发策略将如何影响限定从属 CA 下的其他 CA。有两个可以定义关系的设置:
| • | 需要显式策略 指定在带有策略约束扩展的证书下的层次结构中可存在证书的数量。例如,如果用值 3 来配置显式策略,则表示定义的颁发策略必须存在三层 CA 这样一个层次结构,在这种情况下,限定从属被定义为第一层。 |
| • | 抑制策略映射 指定可在路径中出现的额外证书的数量,一旦超过此数量,便不再允许策略映射。如果抑制策略映射的值为 3,则限制仅可对限定从属 CA 下三层 CA 范围内的 CA 应用策略映射。 |
这些设置可防止出现意外的信任关系。例如,图 3 显示了先前在 Northwind Traders 和 Contoso Consulting 间配置的限定从属,同时还在 Fabrikam Corporation 处添加了一个新的 CA。
如果在 Contoso Consulting CA 和 Fabrikam Corp CA 间配置限定从属,将 BigOrder 颁发策略映射到 SpecialSig 颁发策略,那么,Northwind Traders CA 便有可能接受 Fabrikam Corp CA 颁发的证书。这是因为 SpecialSig 的 OID 首先被映射到了 BigOrder OID。然后,BigOrder OID 又被映射到 MillionDollar OID。
通过在 Northwind Traders CA 处配置下列“策略约束扩展”可以防止这一行为的出现。
[PolicyConstraintsExtension] RequireExplicitPolicy = 1 InhibitPolicyMapping = 1
为 InhibitPolicyMapping 赋值“1”后,只有 ContosoCA 颁发的证书才可以通过 Northwind Traders CA 中定义的 MillionDollar OID 映射而得到识别。Fabrikam Corp CA 颁发的带有 SpecialSig OID 的证书不符合 Northwind Traders CA 定义的 InhibitPolicyMapping =1 设置。这样可以防止 Fabrikam Corp CA 颁发的证书被 Northwind Traders CA 接受。
通过配置策略限定符可以提供与 CA 中的颁发策略实施有关的其他信息。对于颁发策略的用途,策略限定符或直接提供其相关信息,或提供一些指向这些信息的链接。下列代码显示了这两种形式的策略限定符:
[LegalPolicy] OID = 1.3.6.1.4.1.311.21.43 Notice = "Legal policy statement text" URL = "http://www.example.microsoft.com/policy/isspolicy.asp"
当在应用程序中查看证书时,人员可以遵循 URL,并在 Web 浏览器中阅读颁发策略的说明。如果将文本消息用作策略限定符,应用程序将显示该消息。
最佳操作: 建议使用证书实施说明,而不要使用注意文本来实施 URL。这么做可以提供多方面的关键益处。
| • | 这允许修改实施说明,而不必重新颁发 CA 证书。 |
| • | URL 不像通知文本那样急剧增加证书的大小。 |
证书中包含的应用程序策略允许应用程序确定在验证用户、加密数据或签名设备驱动器时,是否可以使用证书。可以对应用程序进行编码,以只接受包含特定应用程序策略的证书。当应用程序收到用户的签名信息时,应用程序将审查与签名信息所用私钥相关联的证书,并检验证书链是否具有作为有效应用程序策略所必需的 OID。
应用程序策略与证书中的扩展密钥使用 (EKU) 扩展类似,因为它们都使用一个或多个 OID 来指示如何在证书中使用公钥。Windows XP 和 Windows Server 2003 家族仍支持 EKU,以支持使用此扩展的 PKI,但应用程序只是一个替代品。在合并 EKU 和应用程序策略扩展时使用下列规则:
| • | 如果提供包含 EKU 扩展的证书,但该证书不包含单独的应用程序策略扩展,那么 Windows XP 和 Windows Server 2003 客户端便会将 EKU 扩展作为应用程序策略扩展来处理。 |
| • | 如果证书具有一个包含应用程序策略的扩展,而且还有一个 EKU 扩展,那么 EKU 扩展将被忽略。 |
| • | 如果证书具有一个应用程序策略扩展和一个 EKU 属性,那么证书的有效策略即为 EKU 属性对象标识符和应用程序策略对象标识符间公用的策略。 |
注意: 如果颁发同时包含应用程序扩展和 EKU 扩展的证书,则请确保这两种扩展在 OID 分配中的一致性,以避免在两种扩展之间发生冲突。在使用应用程序策略或 EKU 扩展时,此举可以确保应用程序策略的一致性。在颁发交叉证书或在使用没有预定义应用程序策略的模板时,这一点尤为重要。
应用程序策略可以在限定从属证书中定义,用来限制来自受信任组织的证书的用途。例如,如果证书通过限定从属 CA 相链接,则可以创建一个应用程序策略,以限制只允许识别具有安全邮件 OID 的证书。
在为 CA 定义应用程序策略时,与应用程序策略相关联的 OID 将包含在颁发的每个证书中。
注意:“所有应用程序 OID”指示该应用程序策略包括所有的应用程序策略。此应用程序策略通常为颁发给 CA 的证书所保留。若要了解如何在证书链中评估策略,请参见“证书状态和吊销”白皮书:http://www.microsoft.com/technet/security/topics/crypto/tshtcrl.mspx
Windows Server 2003 可以识别下列应用程序策略 OID。
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
| ||||
|
|
注意:右键单击控制台树中的“证书模板”,然后从弹出菜单中选择“查看对象标识符”,便可以在“证书模板”控制台中查看可用对象标识符的列表。或者,可以在自定义开发的应用程序中定义和使用自定义的应用程序策略 OID。
若要在 Policy.inf 文件中定义应用程序策略,必须创建下列部分:
[ApplicationPolicyStatementExtension] Policies = AppEmailPolicy, AppCodeSignPolicy, AppAuthPolicy CRITICAL = FALSE [AppEmailPolicy] OID = 1.3.6.1.5.5.7.3.4 ; Secure Email [AppCodeSignPolicy] OID = 11.3.6.1.5.5.7.3.3 ; Code Signing [AppClAuthPolicy] OID = 1.3.6.1.5.5.7.3.2 ; Client Authentication
[ApplicationPolicyStatementExtension] 部分定义 Policy.inf 文件中存在的所有应用程序策略设置部分。在这种情况下,定义了三个应用程序策略部分。对于每个 [AppPolicy] 部分,都定义了与应用程序策略相关联的 OID。
如果定义自定义的应用程序策略 OID,则必须定义 [ApplicationPolicyMappingsExtension] 部分。此部分使用相同的格式,其中本地 OID 被映射到参与限定从属的其他组织使用的 OID,如下面的代码样例所示:
[ApplicationPolicyMappingsExtension] 1.3.6.1.4.1.311.21.64 = 1.2.3.4.98 1.3.6.1.4.1.311.21.65 = 1.2.3.4.100 critical = true
对于颁发策略,还可以就层次结构结构显式策略中必须存在的深度和是否能够将定义的应用程序策略映射到其他应用程序策略进行配置限制。这些设置均在 [ApplicationPolicyConstraintsExtension] 部分按如下方式定义:
[ApplicationPolicyConstraintsExtension] ; consists of two optional DWORDs ; They refer to the depth of the CA hierarchy that requires explicit policy ; and inhibits Policy Mapping RequireExplicitPolicy = 6 InhibitPolicyMapping = 10
本部分讲述一些限定从属在证书服务方面的常见部署,其中包括以下几种方案:
| • | 使用限定从属将证书颁发限制为特定的命名空间 | ||||
| • | 配置两组织间的限定从属;特别是以下两种配置:
| ||||
| • | 使用桥 CA 配置限定从属 |
本部分涉及两方面内容:方案的设计和部署。
注意: 本部分讲述限定从属的设计过程。“演练”部分提供了在两 CA 层次结构间定义限定从属时所涉及的实际部署步骤。
第一个示例是在大型组织中较为常见的方案,大型组织中的证书服务管理一般较为分散。在分散环境中,有时会希望将证书颁发只限制到 Active Directory 中的特定对象。实现这一操作的有效方式是使用名称约束,它可以确保特定 CA 仅将证书颁发给那些用命名空间划分且经过正确定义的用户子集。
假设 Contoso 使用图 4 中显示的林结构来向其区域分公司提供分散的管理。
在 Contoso.com 中,已为证书服务的部署部署了几个 CA。图 5 显示了 Contoso.com 当前使用的 CA 层次结构。
在本示例中,有一个名为 RegionCA 的 CA,用于分散管理 Europe 和 Asia 的证书部署。EuropeCA 和 AsiaCA 均安装在 europe.contoso.com 和 asia.contoso.com 域的成员服务器上。AsiaCA 可以使用限定从属将证书的颁发限制在位于 asia.contoso.com 域中的安全主体(用户、计算机、服务)上。
要实现此目标,必须用下列设置将 AsiaCA 与 CAPolicy.inf 文件一起安装在 %SystemRoot% 文件中:
[NameConstraintsExtension] Include = NameConstraintsPermitted Exclude = NameConstraintsExcluded Critical = True [NameConstraintsPermitted] DNS = .asia.contoso.com email = @asia. contoso.com UPN = .asia.contoso.com UPN = @asia.contoso.com DIRECTORYNAME = "DC=asia,DC=contoso,DC=com [NameConstraintsExcluded]
这些名称约束将只允许来自 asia.contoso.com 域的安全主体接收 AsiaCA 证书颁发机构颁发的证书。如果收到来自其他命名空间的安全主体的申请,这些申请则会由于配置名称约束的原因而遭到拒绝。
注意: 或者,如上所述,在定义约束类型时,AsiaCA 可以从 RegionCA 获得一个包含定义好的名称约束的从属 CA 证书。这两种方法均在颁发的证书中提供了必需的名称约束。
例如,图 6 显示了为 AsiaCA 准备的现成名称约束,用于限制仅将证书颁发到 asia.contoso.com 命名空间。
在本示例中,user3@asia.contoso.com 的证书申请获得了批准,因为 Noels UPN 包含在允许的名称约束中。相反,user5@europe.contoso.com 的申请则被拒绝,因为 UPN Europe.contoso.com 未列表在允许的名称约束中,并被视为排除的名称约束。
企业 CA 在证书申请过程中根据执行证书申请的验证安全主体强制执行名称约束。企业 CA 将使用安全主体的凭据从 Active Directory 中提取用户的名称,然后将这些名称与定义的名称约束进行比较。在这种情况下,user3 将登录到网络,并执行成功的证书申请。
在第二个方案中,可以使用交叉认证,以在两组织间使用证书并信任彼此的证书。在两组织间执行交叉认证之前,必须决定的第一件事就是组织间应当信任哪些证书用途。您可能希望证书仅用于信任那些来自其他组织的安全电子邮件。或者允许安全电子邮件、客户端身份验证和服务器身份验证。
当在两组织的 CA 间配置限定从属时,必须在 Policy.inf 文件中确定并包含这一信息。
注意: 有关如何执行限定从属的更多信息,请参见“演练”部分。
当在两组织间配置交叉认证时,还必须决定是信任其他组织 CA 层次结构中的所有 CA,还是只信任层次结构中的特定 CA 组。
重要: CA 层次结构的交叉认证可能会创建很长的证书链,它会增加 IPSEC、安全邮件 (s/mime)、SSL 等等的网络流量大小。请善用警告,以避免增加链长度和整个证书链字节数,以防超过应用程序的限制。
在第一个示例中,将配置限定从属,以便其他组织可以信任两组织间的所有 CA。图 7 显示了两 CA 的层次结构。
在本方案中,用户 1 和用户 2 具有使用 Outlook 和 S/MIME 交换安全电子邮件的业务需求。由于 Northwind Traders 和 Contoso Consulting 间互操作性的提高,因此决定使用限定从属以允许 Northwind Traders 和 Contoso Consulting 信任组织颁发的安全电子邮件证书。此外,单个 CA 层次结构中的任何 CA 都可以颁发安全电子邮件证书。
要实现此目标,可以使用两种不同的方法:
| • | 根 CA 间的交叉认证 在此设计中,根 CA 将交叉认证证书颁发给其他层次结构的根 CA。这是交叉认证组织最简单的方法,也是了解何时排除限定从属问题的最简单方法。 |
| • | 从属 CA 和根 CA 间的交叉认证 许多组织都不愿意将来自其根 CA 的证书颁发给其他组织的根 CA。在这种情况下,可以将从属 CA 颁发的交叉认证证书颁发给合作伙伴 CA 层次结构中的根 CA。 |
这两种方法都可以实现 CA 层次结构间的完全信任,同时还遵从 Policy.inf 文件中定义的约束。在这两种方法中进行选择的关键决定因素是组织是否愿意从根 CA 将交叉认证证书颁发给合作伙伴组织的根 CA。另一考虑因素是一般情况下根 CA 发布 CRL 的频率要低于从属 CA。如果存在吊销交叉证书颁发机构证书的可能性,那么首选方法是从从属 CA 颁发证书,而不要从根 CA。从属 CA 颁发的证书具有较少的滞后时间,滞后时间是指从证书被吊销到所有客户端都知道吊销事实之间的时间。
如果组织愿意在两根 CA 间执行交叉认证,则可以使用图 8 中的配置。
在此示例中,每个组织的根 CA 都将与其他组织中的根 CA 进行交叉认证。要创建此配置,必须执行两次限定从属:
1. | Contoso Consulting 的 PartnerCA 必须通过限定从属与 Northwind Traders 的 CorpCA 进行交叉认证。 |
2. | Northwind Traders 的 CorpCA 必须通过限定从属与 Contoso Consulting 的 PartnerCA 进行交叉认证。 |
限定从属将要求实施下列配置:
| • | 在每个根 CA 上配置 Policy.inf。Policy.inf 必须包含两组织间定义的所有名称约束、颁发约束和应用程序约束,并在交叉证书颁发机构证书申请期间使用,如“演练”部分所述。 |
| • | 执行限定从属的用户帐户必须获得带有限定从属应用程序策略 OID 的证书,以签名两组织间的限定从属申请。对于第一个申请,必须从 CorpCA,或 CorpCA 和 PartnerCA 计算机所信任的任何 CA 处获得签名证书,对于第二个申请,必须从 PartnerCA,或 CorpCA 和 PartnerCA 计算机所信任的任何 CA 处获得签名证书。 |
图 8 中显示的配置允许将其中任意一个 CA 颁发的证书链接到各个组织所信任的根。例如,如果由 Northwind Traders 中的安全实体按如下方式进行验证的话,颁发给 User1 的证书将由 CorpCA 进行验证:
同样的证书如果要由 Contoso Consulting 组织中的计算机进行验证,便会由 PartnerCA 进行验证。
同样,颁发给 User2 的证书将链接到每个组织中的受信任根。如果证书由 Northwind Traders 中的计算机进行验证,证书链将如下所示:
不过,同样的证书在由 Contoso Consulting 组织中的计算机进行验证时,将采用不同的方法,并会将 PartnerCA 根 CA 用作信任标记:
注意: 在所有交叉认证设计中,单个的证书将根据组织中验证证书的计算机链接到不同的根。在这两个示例中,由 Contoso Consulting 中的计算机验证的证书将链接到 PartnerCA 根,而由 Northwind Traders 中的计算机验证的证书则将链接到 CorpCA 根。
这种设计的好处在于它还允许在每个组织的 CA 层次结构中安装新的 CA 信任。例如,图 9 显示了如何在 Northwind Traders 中添加新 CA。
在这种情况下,颁发给 User4 的证书在这两个组织中都会受到信任。在 Northwind Traders 中,证书链接到 CorpCA 根 CA。
而在 Contoso Consulting 中,证书会链接到受信任的 PartnerCA。
通过从 CA 层次结构的从属 CA 处颁发交叉证书颁发机构证书,可以在两组织间建立相同级别的信任。对于以下几种情形,建议使用此策略:组织的安全策略禁止根 CA 颁发交叉证书颁发机构证书、组织不希望在根 CA 处颁发交叉认证证书,或者存在吊销 crossCA 证书的可能性,并且根 CA 的 CRL 发布周期较长。在这些情况下,可以使用图 10 所示的配置来在两个 CA 层次结构间遵循定义的限定从属约束创建完全信任。
在本示例中,每个组织的根 CA 都要与其他组织中的从属企业 CA 进行交叉认证。若要创建此配置,必须执行两次限定从属:
1. | Contoso Consulting 的 PartnerCA 必须通过限定从属与 Northwind Traders 的 IssuingCA 进行交叉认证。 |
2. | Northwind Traders 的 CorpCA 必须通过限定从属与 Contoso Consulting 的 PolicyCA 进行交叉认证。 |
限定从属要求实施下列配置:
| • | 在每个从属 CA 上配置 Policy.inf。Policy.inf 必须包含两组织间定义的所有名称约束、颁发约束和应用程序约束,并在交叉证书颁发机构证书申请期间使用,如“演练”部分所述。 |
| • | 执行限定从属的用户帐户必须获得带有限定从属应用程序策略 OID 的证书,以签名两组织间的限定从属申请。对于第一个申请,必须从 IssuingCA,或 CorpCA 和 PartnerCA 计算机所信任的任何 CA 处获得签名证书,对于第二个申请,必须从 PolicyCA,或 CorpCA 和 PartnerCA 计算机所信任的任何 CA 处获得签名证书。 |
下面的配置允许将 CA 颁发的证书链接到各个组织所信任的根。例如,如果证书 Northwind Traders 处的安全主体进行验证,则颁发给 User1 的证书将由 CorpCA 进行验证。
同样的证书如果要由 Contoso Consulting 组织中的计算机进行验证,便会由 PartnerCA 进行验证。
同样,颁发给 User2 的证书将链接到每个组织中的受信任根。如果证书由 Northwind Traders 中的计算机进行验证,证书链将如下所示:
不过,同样的证书由 Contoso Consulting 组织中的计算机进行验证时,将由 PartnerCA 根 CA 进行验证。
注意: 在所有交叉认证设计中,单个的证书将根据组织中验证证书的计算机链接到不同的根。在这两个示例中,由 Contoso Consulting 中的计算机验证的证书将链接到 PartnerCA 根,而由 Northwind Traders 中的计算机验证的证书则将链接到 CorpCA 根。
对于在两个根 CA 间建立交叉认证的模型,这种设计还允许在每个组织的 CA 层次结构中安装新的 CA 信任。图 11 显示了如何在 Northwind Traders 中添加新 CA。
在这种情况下,颁发给 User4 的证书在这两个组织中都会受到信任。在 Northwind Traders 中,证书链接到 CorpCA 根 CA。
而在 Contoso Consulting 中,证书会链接到受信任的 PartnerCA。
在某些情况下,两组织可能都希望将交叉认证限制到特定的 CA,或 CA 层次结构的特定部分,例如,在组织使用外部咨询服务的方案中即是如此。组织 (Northwind Traders) 和咨询公司 (Contoso) 可能希望将交叉认证限制到层次结构中的特定 CA。
图 12 显示了执行限定从属以限制组织特定 CA 间信任的方案。
借助于此配置,IssuingCA 和 PolicyCA 颁发的证书将由两组织中受信任的根 CA 进行验证。
在 Northwind Traders,颁发给 user1 的证书将按如下方式链接:
颁发给 user2 的证书将按如下方式链接:
在 Contoso Consulting,证书将与作为受信任的根 CA 与 PartnerCA 进行链接。对于 user1 证书,验证过程将选择以下证书链:
对于 user2 证书,验证过程还将选择链接到 PartnerCA 根 CA 的证书链。
仔细查看添加到 Northwind Traders CA 层次结构中的附加 CA,您会看到这种限定从属设计与允许两层次结构中 CA 间完全信任设计之间有哪些主要不同之处,如图 13 所示。
在这种情况下,ProjectCA 被添加到了 Northwind Traders CA 层次结构之中。对于 Northwind Traders 网络中的计算机,颁发给 user4 的证书是有效的,在为它链接到了受信任的根 CA:CorpCA。
在向 Contoso Consulting 组织中的计算机提供 user4 证书时,只能构建部分证书链,而且该链无法在受信任的根证书中终止。
限定从属允许在交叉认证配置中应用约束。限定从属不是隐式信任另一组织 CA 层次结构颁发的所有 CA,它允许定义应用程序、命名和颁发约束。
例如,当在两组织间建立限定从属时,可能希望配置这样一些约束:
| • | 应用程序策略 不是任何证书都信任,而是通过定义其他组织证书中所需的 OID,为颁发的 crossCA 证书定义特定的应用程序用途。例如,如果组织希望只接受来自合作伙伴的 S/MIME 证书,那么便可以将应用程序策略定义为只接受在应用程序策略扩展或 EKU 扩展中包含安全电子邮件 OID (1.3.6.1.5.5.7.3.4) 的证书。 注意: 扩展的密钥用法在 RFC 2459 的 4.2.1.13 中部分有所定义。 |
| • | 名称约束 无论何时在两组织间使用限定从属,颁发 CrossCA 证书的组织都应包含一个通过交叉认证排除其命名空间的名称约束。这可以防止合作伙伴组织使用其他组织的命名空间来提交证书。例如,Northwind Traders 可以实现一个名称约束,以防 Contoso 提交颁发给 Northwind Traders 用户的证书。换言之,如果 Contoso 层次结构中的 CA 颁发了一个包含使用者名称 user1@northwindtraders.com 的证书,名称约束便将排除 nortwindtraders.com 的电子邮件地址,并使该证书无效。 注意: 名称约束在 RFC 2459 的 4.2.1.11 部分中有所定义。 |
| • | 策略约束 为了确保合作伙伴证书的信任级别,需要定义策略约束(有时也称为颁发策略),并且必须将其作为证书的属性包含在要提交给合作伙伴组织等待接受的证书中。例如,如果在购买方/销售方关系中涉及两个合作伙伴组织,便可定义 Million Dollar 对象 ID。对于 1,000,000 美元或更多的采购,签名证书必须包含 Million Dollar OID。因为这两个组织都必须要定义 OID,因此 Policy.inf 文件必须将来自一个组织的 OID 映射到其他组织的 OID。同样,约束可应用于以下情形:确定是否可以将 OID 映射到其他 OID,或者是否必须从特定的 CA 颁发 OID,或限制交叉认证证书下多少层可以颁发包含 OID 的证书。 注意: 策略约束在 RFC 2459 的 4.2.1.5 部分中定义,并且在 RFC 中被称为“证书策略扩展”。 重要: 如果应用程序策略需要策略和名称约束的不同组合,可能需要执行多次限定从属。例如,如果您愿意接受所有的安全电子邮件证书,但只希望接受中高确定性 OID 的客户端和服务器身份验证证书,则必须定义两个单独的 Policy.inf 文件,而且必须执行两次限定从属处理 — 每个 Policy.inf 文件一次。这一操作结果会颁发两个单独的交叉证书颁发机构证书 — 一个用于安全电子邮件证书,一个用于客户端和服务器身份验证证书。这两个交叉认证证书最终都会因不同的用途而受到信任。在执行身份验证或授权决策时,应用程序将检验策略 OID。 |
当需要创建两个、三个或更多组织间的信任时,使用桥 CA 有时会更容易设计限定从属。桥 CA 将可作为每个组织中 CA 层次结构之间的一个链接。每个组织都将验证使用链接的其他组织(包括桥 CA)所颁发的证书。桥 CA 设计还降低了在信任中包含新组织时所涉及的复杂性。
桥 CA 在配置多组织间单独的信任关系上有许多的优点,其中包括
| • | 桥 CA 降低了在存在三个或更多 CA 层次结构的情况下定义 CA 层次结构间信任的复杂性。 | ||||||
| • | 更易于向现有桥 CA 信任关系添加附加组织。只需执行以下任务:
| ||||||
| • | 桥 CA 可以提供一种按拥有公司管理分公司组织间信任的方法。 |
重要: 即便实现了 BridgeCA,仍无法阻止参与桥 CA 结构的两个组织使用限定从属在其层次结构间定义单独关系。例如,虽然 Northwind Traders 和 Contoso Consulting 之间的电子邮件可能已通过桥 CA 的安全邮件证书验证,但两组织的 CA 间还可能建立了单独的限定从属,规定在两组织间签名交易额超过一百万的采购订单时,证书中必须存在特定策略约束。根据证书的属性,验证过程将根据证书的用途和两组织间定义的限定从属选择相应的证书链。
图 14 中显示了常见的桥 CA 部署设计。
在此设计中,在三个组织中的所有 CA 间建立了完全信任,遵从在限定从属中定义的所有名称、颁发和应用程序策略。
要实现这一目标,需定义限定从属,以便桥 CA 可从每个组织的从属企业 CA 接收定义所有应用程序、命名和策略约束的 subCA 证书。此外,每个组织中的根 CA 可以从桥 CA 接收定义所有应用程序、命名和策略约束的 subCA 证书。
注意: 也可以在每个组织和 BridgeCA 的根 CA 间执行交叉认证。具体采用哪种方法取决于每个组织使用桥 CA 的安全策略、组织是否愿意从其根 CA 向桥 CA 颁发交叉认证证书,以及根 CA 的 CRL 发布期限。
重要: CA 层次结构的交叉认证可能会创建很长的证书链,它会增加 IPSEC、安全邮件 (s/mime)、SSL 等等的网络流量大小。请善用警告,以避免增加链长度和整个证书链字节数,以防超过应用程序的限制。
其结果是在使用 BridgaeCA 实现限定从属所定义证书用途的组织之间实现了完全信任。只要颁发的证书满足所有定义的应用程序、名称和策略约束,那么该证书在所有以此方式连接到 Bridge CA 的组织中都将被视为有效。
在此示例中,对于 Northwind Traders 中的所有计算机,user1 证书将按如下方式链接到 CorpCA 受信任根:
对于 Fabrikam Inc. 中的所有计算机,user1 证书将按如下方式链接到 OrgCA 受信任根:
同样的证书,如果由 Contoso 组织中计算机的证书链接引擎来评估的话,其结果证书链将如下所示:
同样,user6 和 user2 的证书也将根据评估证书计算机所在的组织链接到这三个组织的受信任根。
桥 CA 部署的这种设计允许向任融入组织的层次结构添加新 CA,而无需使用桥 CA 修改现有的限定从属。例如,如果将 Project CA 添加到 Northwind Traders CA 层次结构(如图 15 所示),并遵守应用程序、命名和策略约束,则颁发给 user4 的证书将会受到 Northwind Traders、Fabrikam Inc. 和 Contoso Consulting 组织中计算机的信任。
在这种情况下,对于 Northwind Traders 组织中的计算机,user4 证书将链接到 CorpCA 受信任根。
对于 Fabrikam Inc. 组织中的计算机,证书将链接到 OrgCA 受信任根。
最后,对于 Contoso Consulting 组织中的计算机,证书将链接到 PartnerCA 受信任根。
为了防止其他组织的 CA 用贵组织命名空间的使用者名称创建证书,应创建名称约束来从整个 BridgeCA 信任的证书中排除该命名空间。
例如,对于从 CorpCA 颁发给 BridgeCA 的交叉证书颁发机构证书,可以将以下名称约束添加到 CorpCA 的 Policy.inf 文件中:
[NameConstraintsExtension] Include = NameConstraintsPermitted Exclude = NameConstraintsExcluded Critical = TrUe [NameConstraintsPermitted] DNS = "" email="" UPN="" [NameConstraintsExcluded] DNS = .northwindtraders.com email = @northwindtraders.com UPN = .northwindtraders.com UPN = @northwindtraders.com DIRECTORYNAME = "DC=Northwindtraders,DC=com"
这些名称约束可以确保除 NorthwindTraders 命名空间之外的所有命名空间都得到允许。
注意: 还可以为 NameConstraintsPermitted 定义附加的名称约束,以通过 BridgeCA 限制组织中允许的特定命名空间。
组织间的限定从属还可能需要为受信任的证书定义一些特定的策略约束。如果证书中没有包含指定的策略约束,应用程序就不应选择包含该证书的证书链。
策略约束的问题是对于每个 CA 层次结构,策略约束可能具有不同的名称,而且还将具有不同的对象标识符 (OID)。为了实现 CA 层次结构间的策略约束互操作,必须在 Policy.inf 文件中定义和映射策略约束。
例如,如果 BridgeCA 的作用只是允许在组织间传递中低确定性的证书,则必须在 CA 间颁发的每个交叉认证证书中定义策略约束。
对于由 BridgeCA 颁发给 CorpCA 的交叉证书颁发机构证书,Policy.inf 文件必须包含下列各行,以确定中低确定性的 OID。这些 OID 可以从“证书模板”控制台或从 IANA 中获得:
[PolicyStatementExtension] Policies = MediumAssurance, LowAssurance CRITICAL = FALSE [MediumAssurance] OID = 1.3.6.1.4.1.311.21.8.1608391590.1259233725.355412102.3300744578.1.401 [LowAssurance] OID = 1.3.6.1.4.1.311.21.8.1608391590.1259233725.355412102.3300744578.1.400
除了要为 CA 层次结构定义 OID 之外,Policy.inf 文件还必须将中低确定性的 OIDS 映射到 BridgeCA 使用的 OIDS。这一过程可通过 Policy.inf 文件的 [PolicyMappingsExtension] 部分完成:
[PolicyMappingsExtension] 1.3.6.1.4.1.311.21.8.1608391590.1259233725.355412102.3300744578.1.401 = 1.3.6.1.4.1.311.21.8.2812900009.1258984576.2698790533.44255976.1990074901.2398624335 1.3.6.1.4.1.311.21.8.1608391590.1259233725.355412102.3300744578.1.400 = 1.3.6.1.4.1.311.21.8.2812900009.1258984576.2698790533.44255976.572751058.2135922791 critical = yEs
此部分将中确定性的 OID ID 映射到在 BridgeCA 定义的对象 ID。OID 不一定用于 MediumAssurance 策略约束。实际上,它可以用于用户定义的策略 OID,如上例如示。
若要完成策略映射,BridgeCA 中的 Policy.inf 文件必须包括以下各行,以接收 IssuingCA 的交叉证书颁发机构证书。
[PolicyStatementExtension] Policies = SecLevel1, SecLevel2 CRITICAL = FALSE [SecLevel1] OID = 1.3.6.1.4.1.311.21.8.2812900009.1258984576.2698790533.44255976.1990074901.239862 433 [SecLevel2] OID = 1.3.6.1.4.1.311.21.8.2812900009.1258984576.2698790533.44255976.572751058.2135922 791 [PolicyMappingsExtension] 1.3.6.1.4.1.311.21.8.2812900009.1258984576.2698790533.44255976.1990074901.239862 433 = 1.3.6.1.4.1.311.21.8.1608391590.1259233725.355412102.3300744578.1.401 1.3.6.1.4.1.311.21.8.2812900009.1258984576.2698790533.44255976.572751058.2135922 791 = 1.3.6.1.4.1.311.21.8.1608391590.1259233725.355412102.3300744578.1.400 critical = yEs
如您所见,上面为名为 SecLevel1 和 SevLevel2 的策略定义了自定义的对象标识符。在 [PolicyMappingsExtension] 部分中,同样的 OID 将按 CorpCA 所用 Policy.inf 文件的反顺序映射,以接收来自 BridgeCA 的交叉证书颁发机构证书。
图 16 显示了策略约束映射的另一示例。
在此图中,用 MillionDollar OID, 1.3.6.1.4.1.311.21.8.124 配置了 NorthwindCA。此 OID 被映射到 ContosoCA 中的 BigOrder OID, 1.3.6.4.1.204.22.33.44。虽然颁发给 v-user1 的证书包含不同于颁发给 user2 证书的颁发策略 OID,但策略约束映射使这些 OID 等价,因此这两个 CA 层次结构都可识别这些 OID。
可在此方案中应用的最后一个策略是应用程序策略。应用程序策略将限制另一组织 CA 所颁发证书的用途。通过定义应用程序策略,可以防止组织接受和使用特定用途的证书。
例如,如果只希望用于 S/MIME、客户端身份验证和服务器身份验证用途的这些证书被 BridgeCA 所识别认可,便可以将以下部分添加到 Policy.inf 文件中:
[ApplicationPolicyStatementExtension] ; list of user defined policies Policies = AppOIDPolicy1, AppOIDPolicy2, AppOIDPolicy3 [AppOIDPolicy1] OID = 1.3.6.1.5.5.7.3.4 ; Secure Email [AppOIDPolicy2] OID = 1.3.6.1.5.5.7.3.1 ; Server Authentication [AppOIDPolicy3] OID = 1.3.6.1.5.5.7.3.2 ; Client Authentication CRITICAL = FALSE
这些应用程序策略可以防止在组织间使用 EFS 证书。EFS 证书不会按受信任的方式链接,因为定义的应用程序策略定义了一个 EFS 加密服务的应用程序策略。
注意: 切记,在将这些应用程序策略应用于从另一 CA 层次结构提交的证书时,还要结合名称约束和策略约束一起使用。如果需要不同组合,则必须为每个申请使用单独的 Policy.inf 文件申请多个交叉证书颁发机构证书。例如,您可能不希望为电子邮件证书的实施策略约束,但希望确保在客户端和服务器身份验证证书中存在中低确定性的 OID。这便会需要两个单独的交叉证书颁发机构证书申请 — 一个用于安全电子邮件,一个用于客户端和服务器身份验证。
此部分提供了定义两 CA 层次结构间限定从属过程所涉及的详细实现步骤。
您可以通过下列过程为您的组织部署脱机根 CA。在建立脱机桥 CA 之前,需要先完成以下过程:
| • | 配置 CAPolicy.inf 文件,以为脱机桥 CA 定义下列设置。
| ||||||||
| • | 确定 CA 的可分辨名称。 | ||||||||
| • | 确定用于证书创建和签名的加密服务提供程序 (CSP)。 |
脱机桥 CA 必须在 CAPolicy.inf 文件(存储在 %Systemroot% 文件夹中)中包括以下部分。此示例显示为脱机桥 CA 添加了三个策略设置。这三个策略的 OID 取自组织的 Active Directory。这些 OID 也可以从 IANA 中获得:http://www.iana.org/cgi-bin/enterprise.pl 或从 Windows Server 2003 资源套件中运行 OIDGEN.EXE 获得。
[Version] Signature= "$Windows NT$" [certsrv_server] CRLPeriod = weeks CRLPeriodUnits = 26 [PolicyStatementExtension] Policies = HighAssurancePolicy, MediumAssurancePolicy, LowAssurancePolicy CRITICAL = FALSE [HighAssurancePolicy] OID = 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1.402 [MediumAssurancePolicy] OID = 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1.401 [LowAssurancePolicy] OID = 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1.400 [PolicyConstraintsExtension] RequireExplicitPolicy = 0 InhibitPolicyMapping = 0 [BasicConstraintsExtension] PathLength = 0
注意:如前所述,在根 CA 证书中放置策略 OID 并非最佳操作。由于大部分应用程序不会检查根 CA 吊销,因此在根 CA 证书中放置 CDP 或 AIA 扩展也不是最佳操作。
根 CA 的实际安装过程包括下列步骤:
1. | 确保将已更新的 CAPolicy.inf 文件存储在 %systemroot% 文件夹中。 注意: 附录 B 包含 CAPolicy.inf 文件的一个示例。 |
2. | 在“开始”菜单上,单击“设置”,然后单击“控制面板”。 |
3. | 在“控制面板”上双击“添加或删除程序”。 |
4. | 在“添加或删除程序”窗口中,单击“添加/删除 Windows 组件”。 |
5. | 在“Windows 组件”向导的“Windows 组件”页上,选中“证书服务”复选框。 |
6. | 在“Microsoft 证书服务”对话框中,单击“是”,不重命名计算机,也不更改其域成员身份。 |
7. | 在“Windows 组件”页上,单击“下一步”。 |
8. | 在“CA 类型”页(图 17)中,单击“独立根 CA”,选中“用自定义设置生成密钥对和 CA 证书”复选框,然后单击“下一步”。 |
9. | 在“公钥/私钥对”页(图 18)上,选择“CSP”和“密钥长度”(适用于私钥和公钥对),然后单击“下一步”。 |
10. | 在“CA 识别信息”页(图 19)上,输入“公用名”和“有效期”(适用于根 CA 证书),然后单击“下一步”。 注意: 现在便在上述对话框中提供信息的基础上生成了“加密密钥”。根据在“公钥/私钥对”页上定义的密钥长度,这一过程可能需要一段时间。 |
11. | 在“证书数据库设置”页(图 20)上,接受默认的位置,然后单击“下一步”。 |
12. | 在“Microsoft 证书服务”对话框中,单击“是”,以停止“Internet 信息服务”。 在安装过程中会出现“配置组件”对话框。 |
13. | 如果出现“所需文件”对话框(图 21),请在“文件复制来源”框中输入 CD-ROM 驱动器的路径或分发文件所在的网络共享路径,然后单击“确定”。 |
14. | 在“Windows 组件向导”中单击“完成”。 |
15. | 在“添加或删除程序”对话框中单击“关闭”。 |
16. | 关闭“控制面板”。 |
通常,出于安全目的需要从网络中删除 CA 层次结构的根 CA。必须定期访问 CA 以获取已更新 CRL 的发布。增量 CRL 的目的是以比基 CRL 的发布期限更加频繁的速度发布最新吊销的证书。通过禁用增量 CRL,可以减少访问脱机根 CA 以获取 CRL 发布的时间。通常情况下,不发布增量 CRL 并不是什么问题,因为根 CA 颁发的证书量极低。
重要: 如果在根 CA 间执行交叉认证,则在前合作伙伴交叉认证证书吊销以及访问基 CRL 的客户端识别吊销间可能会存在延迟。
1. | 在“开始”菜单上,指向“程序”,指向“管理工具”,然后单击“证书颁发机构”。 |
2. | 在“证书颁发机构”控制台的控制台树中,展开 CAName(此处 CAName 是脱机桥 CA 的名称)。 |
3. | 在控制台树中,右键单击“吊销的证书”,然后单击“属性”。 |
4. | 在“吊销的证书属性”对话框中,单击以清除“发布增量 CRL”复选框,然后单击“确定”。 |
5. | 在控制台树中,右键单击“吊销的证书”,单击“所有任务”,然后单击“发布”,以发布未引用增量 CRL 的新基 CRL。 |
6. | 在“发布 CRL”对话框中,单击“确定”。 |
安装脱机桥 CA 之后,必须修改颁发证书的 CDP 和 AIA 位置,以确保证书链引擎可以找到脱机桥 CA 的 CRL 和证书。因为从网络中删除了 CA,因此这些默认的 AIA 和 CDP 扩展都不会引用发布点的有效位置。通过从网络中删除脱机根 CA,可以更加有效地删除默认发布点。
删除不需要的 AIA 和 CDP 扩展
1. | 在“证书颁发机构”控制台树中,右键单击“CAName”,然后单击“属性”。 |
2. | 在“CAName 属性”对话框中,单击“扩展”选项卡。 |
3. | 在“选择扩展”框中,确保该框包含“CRL 颁发点 (CDP)”。 |
4. | 在 CDP 位置列表中,选择以 ldap:/// 开头的 CDP 位置,然后单击“删除”。 |
5. | 在“确认删除”对话框中,单击“是”来确认删除。 |
6. | 在 CDP 位置列表中,选择以 http:// 开头的 CDP 位置,然后单击“删除”。 |
7. | 在“确认删除”对话框中,单击“是”来确认删除。 |
8. | 在 CDP 位置列表中,选择以 file://\\ 开头的 CDP 位置,然后单击“删除”。 |
9. | 在“确认删除”对话框中,单击“是”来确认删除。 重要: 切勿删除引用 c:\windows\System32 的 CDP 位置。CA 需要此位置来在本地发布更新“证书吊销”列表。 |
10. | 在“扩展”选项卡的“选择扩展”框中选择“颁发机构信息访问”。 |
11. | 在 AIA 位置列表中,选择以 ldap:/// 开头的 AIA 位置,然后单击“删除”。 |
12. | 在“确认删除”对话框中,单击“是”来确认删除。 |
13. | 在 AIA 位置列表中,选择以 http:// 开头的 AIA 位置,然后单击“删除”。 |
14. | 在“确认删除”对话框中,单击“是”来确认删除。 |
15. | 在 AIA 位置列表中,选择以 file://\\ 开头的 AIA 位置,然后单击“删除”。 |
16. | 在“确认删除”对话框中,单击“是”来确认删除。 重要: 切勿删除引用 c:\windows\System32 的 AIA 位置。CA 需要此位置来在本地发布续订的证书。 |
17. | 单击“确定”。 |
18. | 在“证书颁发机构”对话框中,单击“是”来重新启动“证书服务”。 |
脱机桥 CA 必须添加所需的 CDP 和 AIA 扩展,以允许 Active Directory 客户端及其他客户端查找 CA 证书和 CRL。您必须修改扩展,以包括那些在从网络中删除脱机桥 CA 时可以使用的路径。
本白皮书中提供的这些示例并非强制选项,但在定义脱机根 CA 的 AIA 和 CDP 扩展应予以考虑。
注意: AIA 和 CDP 扩展是证书链引擎构建用于验证的证书链时所必需的。有关证书验证过程的更多信息,请参见微软白皮书“证书状态和吊销疑难解答”:http://www.microsoft.com/technet/security/topics/crypto/tshtcrl.mspx
需要添加的第一个 CDP 扩展是 LDAP:// CDP 扩展。CDP 扩展允许 Active Directory 和其他 LDAP 客户端从可供 Internet 使用的 LDAP 服务获取 CRL。
注意: 在有些 Windows 2000 和 Windows Server 2003 部署中,需在 Extranet 中部署单独的 Active Directory 林,以防止从外部访问公司的 Active Directory。如果在 Extranet 中使用单独的 LDAP 服务,LDAP URL 则必须引用此 Active Directory 服务。否则,LDAP URL 就必须引用所有需要访问 CRL 的客户端可以访问的链接。
若要向 Active Directory 添加 CRL,需要来自 Active Directory(负责维护脱机根 CA URL)林根域的以下信息::
ForestRootDomain The LDAP representation of the forest root domain. For example security.nwtraders com would be represented as DC=security,DC=Nwtraders,DC=com.
您还需要一些来自脱机桥 CA 的信息。尤其需要下列信息:
CAName: The name assigned to the CA during installation of the CA. CAMachineName: The NetBIOS name of the computer hosting the CA.
您需要将以下两个 LDAP 路径添加到 CDP 扩展列表中:
ldap:///CN=CAName,CN=CAMachineName,CN=CDP,CN=Public Key Services, CN=Services,CN=Configuration,CAForestName?certificateRevocationList?base?objectClass=cRLDistributionPoint and ldap://ldap.company.com/CN=CAName,CN=CAMachineName,CN=CDP,CN=Public Key Services, CN=Services,CN=Configuration,CAForestName where ldap.company.com is an URL that refers queries to TCP port 389 to the server hosting the LDAP service, typically a Windows 2000 domain controller.
例如,对于以下信息:
| • | CAName:BridgeCA |
| • | CAMachineName:BridgeComp |
| • | ForestRootDomain:extranet.nwtraders.com |
以下是必须添加到 CDP 扩展列表中的 LDAP 路径:
ldap:///CN=BridgeCA,CN=BridgeComp,CN=CDP,CN=Public Key Services, CN=Services,CN=Configuration,DC=extranet,DC=nwtraders,DC=com?certificateRevocati onList?base?objectClass=cRLDistributionPoint and ldap://ldap.extranet.nwtraders.com/CN=BridgeCA,CN=BridgeComp,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=extranet,DC=nwtraders,DC=com
注意:LDAP:/// URL 是绑定到客户端计算机所用当前域控制器的本地 LDAP 路径。LDAP URL 将无法用于外部客户端,因此,需添加第二个 LDAP URL 以向外部客户端提供 LDAP 服务器的 URL。
1. | 在“证书颁发机构”控制台树中,右键单击“CAName”,然后单击“属性”。 |
2. | 在“CAName 属性”对话框中,单击“扩展”选项卡。 |
3. | 确保“选择扩展”列表中包含“CRL 分发点 (CDP)”,然后单击“添加”。 |
4. | 在“添加位置”对话框(图 22)的“位置”框中,按以上所述键入 LDAP 路径,然后单击“确定”。 提示 可以考虑提前在文本文件中创建路径,然后将完整的 LDAP URL 路径复制和粘贴到“位置”框中。如果在控制台中输错了 LDAP 路径,此处并无可对该路径进行编辑的控制项。 |
5. | 在“扩展”选项卡上,选择“LDAP CDP”扩展。选中“包括在所有 CRL 中。在手动发布时指定在 Active Directory 中的什么地方发布”和“包含在颁发的证书的 CDP 扩展中”复选框,如图 23 所示。在将脱机 CA CRL 发布到 Active Directory 时建议使用第一个选项。第二个选项可确保颁发的所有证书均包括 CRL 更新的路径。 Repeat the process using the LDAP URL ldap://ldap.company.com/CN=CAName,CN=CAMachineName,CN=CDP,CN=Public Key Services, CN=Services,CN=Configuration,CAForestName |
6. | 保持对话框处于打开状态,以允许添加 HTTP CDP 扩展。 注意: 建议您包括一个 HTTP CDP 扩展,以确保非 LDAP 客户端也可以访问脱机 CA 的 CRL。同时,与 LDAP 协议相比,使用 HTTP 协议可以更轻松地将 CRL 部署到外部客户端。 |
此外,至少还应为 HTTP 协议添加一个 CDP 扩展,引用承载脱机 CA CRL 文件的可用 Web 服务器。您应提供多个 HTTP 位置以提供冗余,以防在 CDP 扩展中引用的 Web 服务器不可用。URL 必须引用有效的 HTTP 位置才可正确工作。
添加 HTTP CDP 扩展
1. | 在“CAName 属性”对话框中,单击“扩展”选项卡。 |
2. | 确保“选择扩展”列表中包含“CRL 分发点 (CDP)”,然后单击“添加”。 |
3. | 在“添加位置”对话框(图 24)的“位置”框中,按以上所述键入 HTTP 路径,然后单击“确定”。 提示 可以考虑提前在文本文件中创建路径,然后将完整的 HTTP URL 路径复制和粘贴到“位置”框中。如果在控制台中输错了 HTTP 路径,此处并无可对该路径进行编辑的控制项。 |
4. | 在“扩展”选项卡上,选择“HTTP CDP”扩展,然后选中“包含在颁发的证书的 CDP 扩展中”复选框,如图 25 所示。 |
5. | 在“CAName 属性”对话框中,单击“确定”。 |
6. | 在“证书颁发机构”对话框中,单击“是”来重新启动“证书服务”。 |
除 CDP 扩展之外,还应添加 AIA 扩展,以允许 Web 客户端访问 Web 服务器的脱机桥 CA 证书。
添加更新的 HTTP AIA 扩展
1. | 在“证书颁发机构”控制台树中,右键单击“CAName”,然后单击“属性”。 |
2. | 在“CAName 属性”对话框中,单击“扩展”选项卡。 |
3. | 确保“选择扩展”列表中包含“颁发机构信息访问 (AIA)”,然后单击“添加”。 |
4. | 在“添加位置”对话框(图 26)的“位置”框中,键入根 CA 证书的 HTTP 路径,然后单击“确定”。 提示 可以考虑提前在文本文件中创建路径,然后将完整的 HTTP URL 路径复制和粘贴到“位置”框中。如果在控制台中输错了 HTTP 路径,此处并无可对该路径进行编辑的控制项。 |
5. | 在“扩展”选项卡上,选择“HTTP AIA”扩展,然后选中“包含在颁发的证书的 AIA 扩展中”复选框,如图 27 所示。 |
6. | 在“CAName 属性”对话框中,单击“确定”。 |
7. | 在“证书颁发机构”对话框中,单击“是”来重新启动“证书服务”。 |
修改了 CDP 和 AIA 扩展之后,必须发布引用新 CDP 位置的更新的 CRL。上一版本的 CRL 仍包含 CDP 和 AIA 扩展的默认位置。
发布新的基 CRL
1. | 在控制台树中,右键单击“吊销的证书”,单击“所有任务”,然后单击“发布”,以发布新的基 CRL。 |
2. | 在“发布 CRL”对话框中,单击“确定”。 |
更新了 CRL 后,必须将新版本的 CRL 发布到在 CDP 和 AIA 扩展中引用的位置。这一操作需要手动将 CRL 和证书复制到 Web 服务器,并将 CRL 和证书插入到 Active Directory 中。
CRL 和 CA 证书可以从 \\CAMachineName\CertEnroll share 检索,并复制到磁盘或网络位置中。CRL 和证书必须发布到 CA CDP 和 AIA 扩展中引用的位置。
例如,如果 CDP 扩展引用 http://www.microsoft.com/public/rootca.crl,则必须将 CRL 复制到此位置,以便 Web 客户端可以检索最新版本的 CRL。
同样,如果 AIA 扩展引用 http://www.microsoft.com/public/rootca.crt,则必须将 CA 证书文件复制到此位置,以便 Web 客户端可以检索该 CA 证书。
默认情况下,IIS 的默认网站存储在安装 Windows Server 2003 操作系统驱动器中的 \inetpub\wwwroot 中。若要创建上述引用路径,可以创建一个 Public 文件夹,并将这两个文件复制到 Public 文件夹 (\inetpub\wwwroot\public) 中。
也可以创建一个虚拟文件夹,并使 /Public 引用 Web 服务器磁盘上的任意文件夹。
发布 CRL 和证书后,应当使用 CDP 和 AIA URL 链接到 CRL 和证书,以验证路径的正确性。
可以使用 Certutil.exe 实用工具将 CA 证书和 CRL 发布到命名 Active Directory 上下文的配置中。CA 证书可发布到两个位置:
| • | CN=CAName,CN=证书颁发机构,CN=公钥服务,CN=服务, CN=配置,DC=ForestRootDomainDN |
| • | CN=CAName,CN=AIA,CN=公钥服务,CN=服务, CN=配置, DC=ForestRootDomainDN |
CA 的 CRL 可发布到命名上下文的配置中的以下位置:
| • | CN=CAName,CN=CAComputerName,CN=CDP,CN=公钥服务,CN=服务 CN=配置,DC=ForestRootDomainDN |
默认情况下,Certutil.exe 实用工具只安装在 CA 上,但通过安装 Windows Server 2003 管理包 (adminpak.msi),可以将该工具安装在任意 Windows XP 客户端上。
假设 CA 证书的名称为 RootCA.crt,CA CRL 的名称为 RootCA.crl,而且两文件均存储在当前目录中,那么便可以运行下列命令将 CA 证书和 CA CRL 插入到 Active Directory 中。
要将 CA CRL 安装到 Active Directory 中,请使用下列命令:
certutil.exe -dspublish -f RootCA.crl
如果命令运行成功,则会看到以下命令的响应输出:
ldap:///CN=RootCA,CN=RackCluster3,CN=CDP,CN=Public Key Services,CN=Services ,CN=Configuration,DC=bkforest2,DC=nttest,DC=microsoft,DC=com?certificateRevocati onList?base?objectClass=cRLDistributionPoint?certificateRevocationList Base CRL added to DS store. CertUtil: -dsPublish command completed successfully.
若要将 CA 证书安装到 Active Directory 中,请使用 Certutil –dspublish 命令的变体:
Certutil –dspublish –f RootCA.crt RootCA
如果运行成功,该命令应产生以下输出:
ldap:///CN=RootCA,CN=Certification Authorities,CN=Public Key Services,CN=Se rvices,CN=Configuration,DC=bkforest2,DC=nttest,DC=microsoft,DC=com?cACertificate Certificate added to DS store. ldap:///CN=RootCA,CN=AIA,CN=Public Key Services,CN=Services,CN=Configuratio n,DC=bkforest2,DC=nttest,DC=microsoft,DC=com?cACertificate Certificate added to DS store. CertUtil: -dsPublish command completed successfully.
注意: 证书可被发布到“公钥服务”下的“证书颁发机构”和“AIA”两个位置。
企业从属 CA 必须与为 CA 证书定义的颁发策略一起安装。下列过程描述了企业从属 CA 的安装。
企业从属 CA 要求在 %systemroot% 文件夹中创建并安装 CAPolicy.inf 文件,以应用正确的策略。如果企业 CA 已经存在,则可以仍使用 CAPolicy.inf,并续订 CA 证书以应用经过修改的设置。CAPolicy.inf 文件必须包含以下部分:
[RequestAttributes] CertificateTemplate = SubCA [PolicyStatementExtension] Policies = HighAssurancePolicy, MediumAssurancePolicy, LowAssurancePolicy CRITICAL = FALSE [HighAssurancePolicy] OID = 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1.402 [MediumAssurancePolicy] OID = 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1.401 [LowAssurancePolicy] OID = 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1.400
注意:必须修改确定性策略的 OIDS,以为已存在企业从属 CA 的林匹配 OIDS。每个林都将生成一个唯一的 OID,用于高、中和低确定性的颁发策略。在此示例中,每个 OID 的唯一组件是 1.3.6.1.4.1.311.21.8.2473717464.1095930238.502626717.506190032.1,您必须更改本示例中显示的 OID,以匹配表示林的唯一 OID。
修改 CAPolicy.inf 文件
1. | 将已修改的 CaPolicy.inf 文件复制到 %systemroot% 文件夹。 |
2. | 用记事本打开 CaPolicy.inf 文件。 |
3. | 单击“开始”,然后单击“运行”。在“打开”框中,键入“certtmpl.msc”。 |
4. | 在控制台树中,右键单击“证书模板”,然后单击“查看对象标识符”。 |
5. | 在“查看对象标识符”对话框中,选择“高确定性”,然后单击“复制对象标识符”。 |
6. | 将更新的“高确定性”对象标识符粘贴到 CaPolicy.inf 文件中。 |
7. | 在“查看对象标识符”对话框中,选择“中确定性”,然后单击“复制对象标识符”。 |
8. | 将更新的“中确定性”对象标识符粘贴到 CaPolicy.inf 文件中。 |
9. | 在“查看对象标识符”对话框中,选择“低确定性”,然后单击“复制对象标识符”。 |
10. | 将更新的“低确定性”对象标识符粘贴到 CaPolicy.inf 文件中。 |
11. | 在“查看对象标识符”中,单击“关闭”。 |
12. | 关闭“证书模板”控制台。 |
在配置了 CAPolicy.inf 文件之后,便可开始安装企业 CA。这一过程由三个步骤组成:企业从属 CA 的初始安装、脱机证书申请过程和 SubCA 证书的安装。
执行企业从属 CA 上证书服务的初始安装
1. | 在“开始”菜单上,单击“设置”,然后单击“控制面板”。 |
2. | 在“控制面板”中双击“添加或删除程序”。 |
3. | 在“添加或删除程序”窗口中,单击“添加/删除 Windows 组件”。 |
4. | 在“Windows 组件”向导的“Windows 组件”页上,选中“证书服务”复选框。 |
5. | 在“Microsoft 证书服务”对话框中,单击“是”,不重命名计算机,也不更改其域成员身份。 |
6. | 在“Windows 组件”页中,单击“下一步”。 |
7. | 在“CA 类型”页中,单击“企业从属 CA”,选中“用自定义设置生成密钥对和 CA 证书”复选框,然后单击“下一步”。 |
8. | 在“公钥/私钥对”页上,选择私钥和公钥对的“CSP”、“哈希算法”和“密钥长度”(图 28),然后单击“下一步”。 |
9. | 在“CA 识别信息”页(图 29)上,输入 CA 的“公用名”,然后单击“下一步”。 |
10. | 在“证书数据库设置”页(图 30)上,接受默认的设置,然后单击“下一步”。 |
11. | 在“CA 证书申请”页(图 31)上,选择“将申请保存到一个文件”选项按钮,并接受默认的“申请文件名”,然后单击“下一步”。 注意: 这里假设根 CA 或父 CA 处于脱机状态,而且不能接收联机申请。 |
12. | 在“Microsoft 证书服务”对话框中单击“是”。 |
13. | 如果出现“所需文件”对话框,请输入安装文件的路径,然后单击“确定”。 注意: 这时会出现一个对话框,指示安装尚未完成,必须向父 CA 提交申请文件。 |
14. | 在“Microsoft 证书服务”对话框中单击“确定”。 |
15. | 在“Windows 组件向导”中,单击“完成”。 |
签名脱机证书申请(这些步骤在脱机根 CA 或脱机父 CA 上执行。)
1. | 将申请文件复制到磁盘。 |
2. | 将该磁盘带至脱机根 CA 处。 |
3. | 用记事本打开申请文件。您应可看到与下例类似的内容: -----BEGIN NEW CERTIFICATE REQUEST----- MIICJTCCAY4CAQAwPjETMBEGCgmSJomT8ixkARkWA2NvbTETMBEGCgmSJomT8ixk ARkWA2FiYzESMBAGA1UEAxMJSXNzdWluZ0NBMIGfMA0GCSqGSIb3DQEBAQUAA4GN ADCBiQKBgQDD7j/MtDoqG0ZWdGSkF7h+taDOD5fB8JhTqIgx31maN+YQE288n7Vm xtHH7a6Mo+hTRyNBr9gut3ZD4+CNETE+ek3SAsqu/7yXKPzlURlrniKWSAQ9kseO 9llLNFVAWwE8dwxR/taqMAKW1hxflub7p7qnL95eqLzzLfzPfqHwoQIDAQABoIGm MCkGCisGAQQBgjcNAgMxGxYZNS4xLjM1OTAuMi5TZXJ2aWNlIFBhY2sgMTB5Bgkq hkiG9w0BCQ4xbDBqMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBS64o3oWvft Zy8bMazXc1SZsyCx2jAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8E BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQAl15B50lwN AfsSgFKTuPELSalkjWmnn11ZPAmGCLHnhZ6yhQwonWntN3nRaU7F1+KfEnvoibb2 DM1x7SLoMEzQrWQ8sWneoBSCtD0Sdg24dIpWwxlnKgsImRlfGnlEQEd/VHTgyxSh hrS1gQXYQYH0CT8giCZ8PwGsg1qr/8dMIg== -----END NEW CERTIFICATE REQUEST----- |
4. | 将申请文件的整个内容复制到 Windows 剪贴板。 |
5. | 启动 Internet Explorer。 |
6. | 打开 http://localhost/certsrv URL。 |
7. | 在“欢迎”页上单击请“申请一个证书”链接。 |
8. | 在“申请一个证书”页上,单击“高级证书申请”。 |
9. | 在“高级证书申请”页中,单击“使用 base64 编码的 CMC 或 PKCS#10 文件提交一个证书申请,或使用 base64 编码的 PKCS#7 文件续订证书申请”。 |
10. | 在“提交一个证书申请或续订申请”页的“保存的申请”框中粘贴申请文件的内容,然后单击“提交”。 |
11. | 将出现“证书挂起”页,告知您管理员必须颁发该证书。您应记录下申请 ID,供将来参考。 |
12. | 关闭 Internet Explorer。 |
若要颁发证书,必须使用“证书颁发机构”控制台。
1. | 在“开始”菜单上,指向“程序”,指向“管理工具”,然后单击“证书颁发机构”。 |
2. | 在控制台树中,展开“CAName”(这里 CAName 是“证书颁发机构”的名称),然后单击“挂起的申请”容器。 |
3. | 在详细信息窗格中,右键单击上面提交申请的挂起的申请(由其申请 ID 标识),然后单击“所有任务”,然后单击“颁发”。 |
4. | 关闭“证书颁发机构”控制台。 |
检索颁发的证书(这些步骤在脱机根 CA 或脱机父 CA 中执行。)
1. | 启动 Internet Explorer。 |
2. | 打开 http://localhost/certsrv URL。 |
3. | 在“欢迎”页上,单击“查看挂起的证书申请状态”链接。 |
4. | 在“查看挂起的证书申请状态”页上,单击“保存的申请证书”(日期和时间)链接。 |
5. | 在“证书已颁发”页上,单击“下载证书链”链接。 |
6. | 在“文件下载”对话框中,单击“保存”。 |
7. | 在“另存为”对话框的“文件名”框中,键入“a:\certnew.p7b”,然后单击“保存”,将 PKCS#7 文件保存到磁盘。 |
8. | 如果出现“下载完成”对话框,请单击“关闭”。 |
9. | 关闭 Internet Explorer。 |
现在,必须使用下列步骤在企业从属 CA 中安装 PKCS#7 文件:
1. | 将包含 PKCS#7 文件的磁盘插入磁盘驱动器。 |
2. | 在“开始”菜单上,指向“程序”,指向“管理工具”,然后单击“证书颁发机构”。 |
3. | 在控制台树中,右键单击“CAName”(这里 CAName 是企业从属 CA 的名称),指向“所有任务”,然后单击“安装 CA 证书”。 |
4. | 在“选择要完成 CA 安装的文件”对话框的“文件名”框中,键入“a:\certnew.p7b”,然后单击“打开”。 |
5. | 在控制台树中,右键单击“CAName”,导向“所有任务”,然后单击“启动服务”。 |
注意: 如果无法从网络直接访问 CRL,则还可能需要手动安装脱机根 CA 的 CRL。您可以使用 certutil.exe –addstore <CRL file> 命令加载 CRL 文件。
1. | 确保经修改的 CAPolicy.inf 文件在 %SystemRoot% 文件夹中。 这可确保应用新定义的约束或保持现有策略约束。 |
2. | 在“开始”菜单上,指向“程序”,指向“管理工具”,然后单击“证书颁发机构”。 |
3. | 在控制台树中,右键单击“CAName”,然后单击“续订 CA 证书”。 |
4. | 在“安装 CA 证书”对话框中,单击“是”停止“证书服务”。 注意: 除定义约束外,在 CAPolicy.inf 文件中定义的密钥大小、密钥寿命、CDP 位置、AIA 位置及其他设置均可在证书续订中重新定义。 |
5. | 在“续订 CA 证书”对话框(图 32)中,单击“否”,以便使用相同的公钥和私钥对,然后单击“确定”。 |
6. | 在“CA 证书申请”对话框(图 33)中,输入颁发 CA 的“计算机名称”和“父 CA 名”,然后单击“取消”。这一操作将在安装 Windows Server 2003 的卷根文件夹中放置一个 CAMachineName_CAName.reg 文件。 注意: 如果颁发 SubCA 证书的 CA 联机,则可以单击“确定”尝试联机证书申请。 |
7. | 将 CAMachineName_CAName.req 文件复制到磁盘,然后执行在安装新从属 CA 证书时需要遵循的脱机申请和证书安装过程。 |
安装 CA 证书之后,应检查企业 CA 证书,以确保证书中包含了应有的颁发策略。
1. | 在“开始”菜单上,指向“程序”,指向“管理工具”,然后单击“证书颁发机构”。 | ||||||
2. | 在控制台树中,右键单击“CAName”(这里 CAName 是 CA 的名称),然后单击“属性”。 | ||||||
3. | 在“CAName 属性”对话框的“常规”选项卡上,单击“查看证书”。 | ||||||
4. | 在“常规”选项卡上,确保预期的用途列表中包括:
| ||||||
5. | 如果有任何遗失,或作为 OID(而非文本)出现,则请检查 %systemroot%\CAPolicy.inf 文件,并确保文件中包含正确的域 OID。不正确的 OID 将会导致在此处列出 OID,而不是转换为显示名称。 | ||||||
6. | 在“证书”对话框中,单击“确定”。 | ||||||
7. | 在“CAName 属性”对话框中,单击“确定”。 | ||||||
8. | 关闭“证书颁发机构”控制台。 |
独立 CA 不能使用证书模板。因为独立 CA 不支持证书模板,因此,证书申请必须在证书注册期间插入限定从属的 OID。通过下列步骤可在独立 CA 中获取限定从属证书。
执行限定从属签名证书的初始申请
1. | 在独立 CA 中,确保以 CA 计算机的“管理员”角色登录。 | ||||||||||||||
2. | 启动 Internet Explorer。 | ||||||||||||||
3. | 打开 http://localhost/certsrv URL。 | ||||||||||||||
4. | 在“欢迎”页上单击“申请一个证书”。 | ||||||||||||||
5. | 在“申请一个证书”页上,单击“高级证书申请”。 | ||||||||||||||
6. | 在“高级证书申请”页上单击“创建并向此 CA 提交一个申请”。 | ||||||||||||||
7. | 在“高级证书申请”页的“识别信息”中输入以下信息:
| ||||||||||||||
8. | 在“需要的证书类型”中,从列表中选择“其他”。 | ||||||||||||||
9. | 在“OID”框中,键入“1.3.6.1.4.1.311.10.3.10”。 | ||||||||||||||
10. | 在“密钥选项”中,设置下列选项:
| ||||||||||||||
11. | 在“其他选项”中,设置以下选项:
| ||||||||||||||
12. | 检查各个选项条目,然后单击“提交”。 将出现“证书挂起”页。 |
默认情况下,独立 CA 上的证书申请被设置为挂起状态。若要颁发证书,CA 管理员必须使用“证书颁发机构”控制台。
1. | 在“开始”菜单上,指向“程序”,指向“管理工具”,然后单击“证书颁发机构”。 |
2. | 在控制台树中,单击“挂起的申请”容器。 |
3. | 在详细信息窗格中,右键单击“证书申请”,指向“所有任务”,然后单击“颁发”。 |
4. | 关闭“证书颁发机构”控制台。 |
最后一步是安装所颁发的证书。
1. | 在 Internet Explorer 中,打开 http://localhost/certsrv/ URL。 |
2. | 在“欢迎”页上,单击“查看挂起的证书申请状态”。 |
3. | 在“查看挂起的证书申请的状态”页上,单击“User-EKU (1.3.6.4.1.311.10.3.10) 证书”(日期和时间)链接。 |
4. | 在“证书颁发”页上单击“安装此证书”。 将出现“证书已安装”页。 |
5. | 关闭 Internet Explorer。 |
在安装了限定从属证书之后,请查看该证书,以确保已正确配置该证书。
1. | 打开空白的 MMC 控制台。 |
2. | 在“文件”菜单上,单击“添加/删除”管理单元。 |
3. | 在“添加/删除管理单元”对话框中,单击“添加”。 |
4. | 在“添加独立管理单元”对话框中,选择“证书”,然后单击“添加”。 |
5. | 在“证书管理单元”对话框中,单击“我的用户帐户”,然后单击“完成”。 |
6. | 在“添加独立管理单元”对话框中,单击“关闭”。 |
7. | 在“添加/删除管理单元”对话框中,单击“确定”。 |
8. | 在控制台树中,展开“证书 – 当前用户”,展开“个人”,然后单击“证书”。 |
9. | 在详细信息面板中,双击带有“限定从属签名的模板友好名称”的证书。 |
10. | 在“证书”对话框的“常规”选项卡上,确保预期用途只列出了“限定从属”。 |
11. | 在“证书”对话框的“详细信息”选项卡上,确保“密钥用法”指示“数字签名、非拒绝 (c0)”。 |
12. | 单击“确定”。 |
13. | 关闭控制台,不保存更改。 |
运行于 Windows Server 2003 Enterprise Edition 之上的企业 CA 可以创建 2.0 版的证书模板。对于限定从属,可以创建 2.0 版的模板,以允许限定从属签名。如果计划从企业 CA 颁发限定从属签名证书,则可通过下列步骤来创建和检索企业 CA 的限定从属签名证书。
注意: 虽然在创建限定从属签名证书方面这一目标与上一部分的目标相同,但在从企业 CA 颁发证书时,其方法却并不相同。至于要采用哪种 CA 类型,取决于基础结构中的可用 CA。
为限定从属签名创建第 2 版证书模板
1. | 打开空白的 MMC 控制台。 | ||||
2. | 在“文件”菜单上,单击“添加/删除”管理单元。 | ||||
3. | 在“添加/删除管理单元”对话框中,单击“添加”。 | ||||
4. | 在“添加独立管理单元”对话框中,选择“证书模板”,然后单击“添加”。 | ||||
5. | 在“添加独立管理单元”对话框中,单击“关闭”。 | ||||
6. | 在“添加/删除管理单元”对话框中,单击“确定”。 | ||||
7. | 在控制台树中,选择“证书模板”。 | ||||
8. | 在详细信息窗格中,右键单击“注册代理”,然后单击“复制模板”。 | ||||
9. | 在“新模板的属性”对话框的“常规”选项卡上,于“模板显示名”框中键入“限定从属签名”。 | ||||
10. | 在“请求处理”选项卡(图 34)上,更改以下属性:
| ||||
11. | 在“使用者名称”选项卡上,确保将“使用者名称格式”设置为“完全可分辨名称”,并确保只选中“用户主体名称 (UPN)”复选框。 | ||||
12. | 在“颁发要求”选项卡(图 35)上,确保选中“CA 证书管理程序批准”复选框。对于“要重新注册,要求下列项目”,确保设置了“有效的现存证书”选项。 注意: 您可以根据组织的安全策略选择使用不同的颁发设置。例如,您可以选择需要一个或多个证书颁发的授权签名,或者要求为证书的重新注册使用相同的审批过程。 | ||||
13. | 在“扩展”选项卡的模板框包含的“扩展”中,选择“应用程序策略”,然后单击“编辑”。 | ||||
14. | 在“编辑应用程序策略扩展”对话框的“应用程序策略”框中,选择“证书申请代理”,然后单击“删除”。 | ||||
15. | 在“编辑应用程序策略扩展”对话框中单击“添加”。 | ||||
16. | 在“添加应用程序策略”对话框的“应用程序策略”框中,选择“限定从属”,然后单击“确定”。 注意: 您也可以创建带有自己分配的 OID 的自定义应用程序策略。稍后,在配置 XXXX 证书模板以要求为自定义应用程序策略添加签名的过程中,需要进行一些修改。 | ||||
17. | 在“编辑应用程序策略扩展”对话框中,确保“应用程序策略”对话框中出现的唯一策略是“限定从属”,然后单击“确定”。 | ||||
18. | 在“安全”选项卡上,确保只有“域管理员”和“企业管理员”才具有证书模板的“注册”权限。您也可以创建自定义的安全组,并只赋予该安全组“注册”权限。 | ||||
19. | 单击“确定”,将所有配置更改应用到证书模板。 |
创建限定从属签名模板之后,必须修改交叉证书颁发机构证书模板。
1. | 在“证书模板”控制台的“详细信息”窗格中,双击“交叉证书颁发机构证书模板”。 | ||||
2. | 在“交叉证书颁发机构属性”对话框的“颁发要求”选项卡(图 36)上,进行如下更改:
| ||||
3. | 单击“确定”。 | ||||
4. | 关闭“证书模板”控制台 重要:默认情况下,在颁发 CrossCA 模板时,要将其发布到 Active Directory。确保在颁发前对证书进行适当的格式设置和配置。如果未做适当的准备,那么无效或错误的约束可能会在环境中产生不可预期的行为,并造成安全风险。 |
由于只有 Windows Server 2003 Enterprise Edition 支持第 2 版的证书模板,因此它是证书部署所必需的。必须要配置 Windows Server 2003 Enterprise Edition 以同时颁发限定从属签名证书模板和交叉证书颁发机构证书模板。
1. | 以 CA 管理员的身份登录到运行 Windows Server 2003 Enterprise Edition、并将证书服务配置为企业 CA 的机器上。 |
2. | 在“开始”菜单上,指向“程序”,指向“管理工具”,然后单击“证书颁发机构”。 |
3. | 在控制台树中,展开“CAName”(这里 CAName 是赋予 CA 的逻辑名称)。 |
4. | 在控制台树中,右键单击“证书模板”,指向“新建”,然后单击“要颁发的证书模板”。 |
5. | 在“启用证书模板”对话框(图 37)的可用模板列表中,单击“交叉证书颁发机构”,并按住 Ctrl 单击“限定从属签名”,然后单击“确定”。 |
6. | 在详细信息窗格中,确保出现“交叉证书颁发机构”和“限定从属签名”证书。 |
7. | 关闭“证书颁发机构”控制台。 |
虽然通常使用“证书 MMC”控制台从企业 CA 申请证书,但“限定从属签名”证书模板中对 CA 证书管理程序审批的要求却使“证书服务 Web 注册”页的使用成为获取“限定从属签名”证书的一个更好的方法。
执行限定从属签名证书的初始申请
1. | 确保您已作为某一用户登录,该用户必须具有“限定从属签名证书模板”的“注册”权限。 | ||||||||||||||
2. | 启动 Internet Explorer。 | ||||||||||||||
3. | 打开 http://CAMachineName/certsrv URL(这里 CAMachineName 是配置颁发“限定从属签名证书”的 Windows Server 2003 Enterprise Edition 的名称)。 | ||||||||||||||
4. | 在“欢迎”页上单击“申请一个证书”。 | ||||||||||||||
5. | 在“申请一个证书”页面上,单击“高级证书申请”。 | ||||||||||||||
6. | 在“高级证书申请”页上单击“创建并向此 CA 提交一个申请”。 | ||||||||||||||
7. | 在“高级证书申请”页的“证书模板”部分的列表中选择“限定从属签名”。 | ||||||||||||||
8. | 在“密钥选项”部分中,设置下列选项:
| ||||||||||||||
9. | 在“其他选项”部分中,设置以下选项:
| ||||||||||||||
10. | 检查各处选项,然后单击“提交”。 将出现“证书挂起”页。 |
默认情况下,独立 CA 上的证书申请被设置为挂起状态。要颁发证书,CA 管理员必须使用“证书颁发机构”控制台。
1. | 确保作为 CA 证书适宜于员身份登录到 Windows Server 2003 Enterprise Edition。 |
2. | 在“开始”菜单上,指向“程序”,指向“管理工具”,然后单击“证书颁发机构”。 |
3. | 在控制台树中,单击“挂起的申请”容器。 |
4. | 在详细信息窗格中,右键单击“限定从属签名”证书的证书申请,指向“所有任务”,然后单击“颁发”。 |
5. | 关闭“证书颁发机构”控制台。 |
最后的步骤是安装颁发的证书。
1. | 在执行原始证书申请的计算机上,作为申请“限定从属签名”证书的用户登录。 |
2. | 在 Internet Explorer 中,打开 http://CAMachineName/certsrv URL(这里 CAMachineName 是配置颁发“限定从属签名证书”的 Windows Server 2003 Enterprise Edition 的名称)。 |
3. | 在“欢迎”页上,单击“查看挂起的证书申请状态”。 |
4. | 在“查看挂起的证书申请的状态”页上,单击“QualifiedSubordinationSigning 证书”(日期和时间)链接。 |
5. | 在“证书颁发”页上单击“安装此证书”。 应会出现“证书已安装”页。 |
6. | 关闭 Internet Explorer。 |
在安装了限定从属证书之后,应查看该证书,以确保已正确配置该证书。
1. | 打开空白的 MMC 控制台。 |
2. | 在“文件”菜单上,单击“添加/删除”管理单元。 |
3. | 在“添加/删除管理单元”对话框中,单击“添加”。 |
4. | 在“添加独立管理单元”对话框中,选择“证书”,然后单击“添加”。 |
5. | 在“证书管理单元”对话框中,单击“我的用户帐户”,然后单击“完成”。 |
6. | 在“添加独立管理单元”对话框中,单击“关闭”。 |
7. | 在“添加/删除管理单元”对话框中,单击“确定”。 |
8. | 在控制台树中,展开“证书 – 当前用户”,再展开“个人”,然后单击“证书”。 |
9. | 在详细信息面板中,双击带有“限定从属签名的模板友好名称”的证书。 |
10. | 在“证书”对话框的“常规”选项卡上,确保预期用途只列出了“限定从属”。 注意: 如果使用自定义的应用程序策略,那么将出现此应用程序策略(而非限定从属)的名称及其 OID。 |
11. | 在“证书”对话框的“详细信息”选项卡上,确保“密钥用法”指示“数字签名 (80)”。 |
12. | 单击“确定”。 |
13. | 关闭控制台,不保存更改。 |
成功安装限定从属签名证书之后,现在便可以从其他 CA 申请“交叉证书颁发机构”证书。在此示例中,将使用下面图 38 所示的 CA。
第一个交叉认证申请将要从 F1CA 证书颁发机构运行。若要执行限定从属,需在执行过程开始之前于 F1CA 处事先准备好以下信息:
| • | 来自 F2Root 的 CA 证书。 |
| • | 在 F1CA 中配置的 Policy.inf 文件,其中定义了为限定从属定义的命名约束、策略约束和应用程序策略。 |
| • | 执行限定从属的用户必须具有 F1CA 颁发的限定从属签名证书。 |
这些项目都一一备妥之后,便可使用以下过程从 F1CA 获取 F2Root 的交叉证书颁发机构证书。该申请通过 Certreq.exe 执行,该实用工具是从 Windows Server 2003 管理工具包中的命令行工具,它可从命令行申请证书。
重要: Policy.inf 中定义的约束被强制应用于生成申请的签名 CA 中,而非您在申请过程中所用 CA 证书的 CA 中。在要颁发交叉证书的域中生成交叉证书申请也是十分重要的。
1. | 将 F2Root 证书和 Policy.inf 文件复制到 F1CA 计算机上的文件夹中。 |
2. | 打开一个命令行提示窗口。 |
3. | 将包含 F2Root 证书和 Policy.inf 文件的文件夹设定为当前目录。 |
4. | 运行 certreq.exe –policy。此命令将从现有 CA 证书或从现有申请构造交叉认证或限定从属申请。 注意: 如果创建从独立 CA 到企业 CA 的交叉证书申请,必须指定以下命令以在模板中包含适当的 CrossCA 模板名称。示例: certreq –policy –attrib CertificateTemplate:CrossCA <CatoXcertify> <inf file> <CMCoutFile> |
5. | 在“打开申请文件”对话框(图 39)的“文件类型”框中选择“证书文件 (*.cer, *.crt, *.der)”,选择申请 CA 证书(此示例中为 RackCluster3_F2Root),然后单击“打开”。 |
6. | 在“打开 Inf 文件”对话框(图 40)中,选择经过配置的 Policy.inf 文件,然后单击“打开”。 注意: 您无需命名文件 Policy.inf。在此示例中,文件被命名为 xrossForest2.inf,以帮助确定所需的 Policy.inf 文件。 |
7. | 在“证书列表”对话框(图 41)中,选择先前申请的限定从属证书,然后单击“确定”。 |
8. | 在“保存申请”对话框(图 42)的“文件名”框中,键入描述交叉证书颁发机构证书申请的名称,然后单击“保存”。 |
在 F1CA 中,最后的步骤是处理交叉证书颁发机构证书的申请文件。
1. | 在“管理工具”中打开“证书颁发机构”。 |
2. | 在控制台树中,右键单击“CAName”(这里 CAName 是 CA 的名称),指向“所有任务”,然后单击“提交一个新的申请”。 |
3. | 在“打开申请文件”对话框(图 43)中,选择在上一过程中创建的申请文件,然后单击“保存”。 |
4. | 在“保存证书”对话框中,指示证书文件的名称,然后单击“保存”。 证书文件被自动发布到 Active Directory 中,以便 Forest1 中的客户端可以验证 Forest2 中 CA 颁发的证书。 |
最后的步骤是确认证书已成功发布到 Active Directory 中。此过程使用 Certutil.exe 来验证交叉证书的存在。下面的演练用 Microsoft Intranet CA 颁发的使用者名称 ASIA SA Root CA 对证书进行验证。
1. | 打开一个命令行提示窗口。 | ||||
2. | 键入 certutil -viewstore "CN=<CAName>,CN=AIA,CN=Public Key Services,CN=Services,CN=Configuration,DC=<ForestRootDN>?crossCertificatePair 其中:
在此示例中,使用以下命令: certutil -viewstore "CN=ASIA SA Root CA,CN=AIA,CN=Public Key Services,CN=Services,CN=Configuration,DC=corp,DC=microsoft,DC=com?crossCertificatePair Note:如果执行交叉认证的 CA 的使用者名称中不含 CN=,Windows Server 2003 CA 将为 CA 的二进制名称生成一个哈希。例如,若要执行此例上一步中的命令,语法应与下面的示例相似,其中公共名称即为 CA 名称的哈希: certutil -viewstore CN=12d2cb85c5e62f9aa7591e2ddaa44c987de5abbc,CN=AIA,CN=Public Key Services,CN=Services,CN=Configuration,DC=ntdev,DC=corp,DC=microsoft,DC=com | ||||
3. | 在“查看证书存储”窗口(图 44)中,将列出所有交叉证书颁发机构证书,并在使用者名称中显示 <CAName>。 注意: 当以前的证书过期,续订交叉证书颁发机构证书时,可同时存在多个交叉证书颁发机构证书。 | ||||
4. | 在“查看证书存储”对话框中,选择要查看的交叉证书颁发机构证书,然后单击“查看证书”。 | ||||
5. | 在“证书”对话框中,单击“证书路径”选项卡。 | ||||
6. | 在“证书路径”选项卡(图 45)中,确保证书路径是正确的路径。在此示例中,证书链正确无误,它显示了 ASIA SA ROOT CA 与 Microsoft Corporate 根颁发机构的之间的链接关系。 | ||||
7. | 在“证书”对话框中,单击“确定”。 | ||||
8. | 在“查看证书存储”对话框中,单击“确定”。 | ||||
9. | 关闭命令行提示窗口。 |
当用某些第三方证书颁发机构执行交叉认证时,可能必须指定应在何处检索与所提供证书相关联的附加交叉证书。通常,证书中都有一个已编码的交叉证书 URL,但在某些情况下,您可能需要指定其他 URL。
添加其他 URL
1. | 打开一个空的 MMC 控制台。 | ||||
2. | 在“文件”菜单中单击“添加/删除管理单元”。 | ||||
3. | 在“添加/删除管理单元”对话框中,单击“添加”。 | ||||
4. | 在“添加独立管理单元”对话框中,单击“添加”。 | ||||
5. | 在“证书管理单元”对话框中,根据必须使用交叉证书进行链接的证书是颁发到计算机、服务,还是颁发到您的用户帐户,选择“我的用户帐户”、“服务帐户”或“计算机帐户”,然后单击“完成”。 注意: 如果您不是本地计算要的管理员,则会自动加载证书控制台,焦点位于“我的用户帐户”。 | ||||
6. | 在控制台树中,展开“证书”–“当前用户”,再展开“个人”,然后单击“证书”。 | ||||
7. | 在详细信息窗格中,右击必须执行交叉认证的证书,然后单击“属性”。 | ||||
8. | 在“证书属性”对话框中,单击“交叉证书”选项卡。 | ||||
9. | 在“交叉证书”选项卡(图 46)中,选择“指定额外的交叉证书下载位置”复选框。此外,您还可以执行以下操作:
|
必须反方向执行交叉认证,以确保两个组织中颁发的所有证书都受信任。这需要使用 F1Root 证书在 F2CA 处执行相同的过程。
在使用桥 CA 时必须执行额外过程。BridgeCA 所颁发的证书必须在与 BridgeCA 相连的所有林中发布,以便使用该桥的组织能够识别所有证书。
1. | 将颁发的的所有 CrossCA 证书从 BridgeCA 复制到一个公共共享点。 |
2. | 在与桥相连的第一个林中,运行 Certutil –dspublish –f cert1.crt CrossCA(其中 cert1.crt 即为第一个 crossCA 证书)。 |
3. | 在与桥 CA 相连的所有林中,对交叉 CA 颁发的所有证书重复此过程。 |
[Version] Signature= "$Windows NT$" ; =========================================================== ; Request Attributes ; top level section ; =========================================================== [RequestAttributes] CertificateTemplate = CrossCA AttributeName1 = AttributeValue1 AttributeName2 = AttributeValue2 ; =========================================================== ; NameConstraintsExcluded Name Constraints Extension ; szOID_NAME_CONSTRAINTS 2.5.29.30 ; top level section ; =========================================================== [NameConstraintsExtension] Include = NameConstraintsPermitted Exclude = NameConstraintsExcluded Critical = TrUe [NameConstraintsPermitted] ; list of user defined permitted DNS names ; the numeric second and third arguments are optional ; when present, the second argument is the minimum depth ; when present, the third argument is the maximum depth ; NOTE: Crypto APIs fail to process cert chains when the minimum or maximum ; depth is specified! DNS = foo@domain.com DNS = domain1.domain.com email=me@you.com UPN=user@domain.com ; the first is an IP address, the second is an IP address mask IPADDRESS=255.255.18.172,255.255.255.0 ipaddress=::255.255.18.172,::255.255.255.0 ipaddress=1234:5678:9abc:def0:3210:7654:ba98:fedc,1234:5678:9abc:def0:3210:7654:ba98:fedc ipaddress=::5678:9abc:def0:3210:7654:ba98:fedc,1234:5678:9abc:def0:3210:7654:ba98:fedc ipaddress=1234::def0:3210:7654:ba98:fedc,1234:5678:9abc:def0:3210:7654:ba98:fedc ipaddress=1234:5678:9abc:def0:3210:7654:ba98::,1234:5678:9abc:def0:3210:7654:ba9:fedc ipaddress=1234:5678:9abc:def0:3210:7654::,1234:5678:9abc:def0:3210:7654:ba98:fedc url=http://localhost/certsrv/default.html url=file://\\localhost\certsrv\default.html DIRECTORYNAME = "cn=mycn,ou=myou,s=mystate,c=us" [NameConstraintsExcluded] ; list of user defined excluded DNS names DNS = domain.com ; =========================================================== ; Policy (CPS) Extension ; szOID_CERT_POLICIES 2.5.29.32 ; top level section ; =========================================================== [PolicyStatementExtension] ; list of user defined policies Policies = LegalPolicy, LimitedUsePolicy, ExtraPolicy, OIDPolicy CRITICAL = FALSE [LegalPolicy] ; each policy has one OID, and zero or more Notice and URL keys OID = 1.3.6.1.4.1.311.21.43 Notice = "Legal policy statement text" [LimitedUsePolicy] OID = 1.3.6.1.4.1.311.21.47 URL = "http://http.site.com/some where/default.asp" URL = "ftp://ftp.site.com/some where else/default.asp" Notice = "Limited use policy statement text." URL = "ldap://ldap.site.com/some where else again/default.asp" [ExtraPolicy] OID = 1.3.6.1.4.1.311.21.53 URL = http://extra.site.com/Extra Policy/default.asp [oidpolicy] OID = 1.3.6.1.4.1.311.21.55 ; =========================================================== ; Policy Mapping Extension ; szOID_POLICY_MAPPINGS 2.5.29.33 ; top level section ; =========================================================== [PolicyMappingsExtension] ; list of user defined policy mappings ; first OID is Issuer Domain Policy OID, second is Subject Domain Policy OID ; each entry maps one foreign policy OID to local 1.3.6.1.4.1.311.21.53 = 1.2.3.4.87 1.3.6.1.4.1.311.21.54 = 1.2.3.4.89 critical = yEs ; =========================================================== ; Policy Constraints Extension ; szOID_POLICY_CONSTRAINTS 2.5.29.36 ; top level section ; =========================================================== [PolicyConstraintsExtension] ; consists of two optional DWORDs ; They refer to the depth of the CA hierarchy that requires explicit policy ; and inhibits Policy Mapping RequireExplicitPolicy = 3 InhibitPolicyMapping = 5 ; =========================================================== ; Application Policy (CPS) Extension ; szOID_APPLICATION_CERT_POLICIES 1.3.6.1.4.1.311.21.10 ; top level section ; =========================================================== [ApplicationPolicyStatementExtension] ; list of user defined policies Policies = AppLegalPolicy, AppLimitedUsePolicy, AppExtraPolicy, AppOIDPolicy CRITICAL = FALSE [AppLegalPolicy] ; each policy has one OID, and zero or more Notice and URL keys OID = 1.3.6.1.4.1.311.21.54 Notice = "Application Legal policy statement text" [AppLimitedUsePolicy] OID = 1.3.6.1.4.1.311.21.58 URL = "http://http.site.com/application some where/default.asp" URL = "ftp://ftp.site.com/application some where else/default.asp" Notice = "Application Limited use policy statement text." URL = "ldap://ldap.site.com/application some where else again/default.asp" [AppExtraPolicy] OID = 1.3.6.1.4.1.311.21.64 URL = http://extra.site.com/Application Extra Policy/default.asp [Appoidpolicy] OID = 1.3.6.1.4.1.311.21.66 ; =========================================================== ; Application Policy Mapping Extension ; szOID_APPLICATION_POLICY_MAPPINGS 1.3.6.1.4.1.311.21.11 ; top level section ; =========================================================== [ApplicationPolicyMappingsExtension] ; list of user defined application policy mappings ; first OID is Issuer Domain Policy OID, second is Subject Domain Policy OID ; each entry maps one foreign policy OID to local 1.3.6.1.4.1.311.21.64 = 1.2.3.4.98 1.3.6.1.4.1.311.21.65 = 1.2.3.4.100 critical = trUE ; =========================================================== ; Application Policy Constraints Extension ; szOID_APPLICATION_POLICY_CONSTRAINTS 1.3.6.1.4.1.311.21.12 ; top level section ; =========================================================== [ApplicationPolicyConstraintsExtension] ; consists of two optional DWORDs ; They refer to the depth of the CA hierarchy that requires explicit policy ; and inhibits Policy Mapping RequireExplicitPolicy = 6 InhibitPolicyMapping = 10 ; =========================================================== ; Basic Constraints Extension ; szOID_BASIC_CONSTRAINTS2 2.5.29.19 ; top level section ; =========================================================== [BasicConstraintsExtension] ; Subject Type is not supported always set to CA ; maximum subordinate CA path length PathLength = 3 [EnhancedKeyUsageExtension] ;OID = 1.3.6.1.4.1.311.21.6 ; szOID_KP_KEY_RECOVERY_AGENT ;OID = 1.3.6.1.4.1.311.10.3.9 ; szOID_ROOT_LIST_SIGNER ;OID = 1.3.6.1.4.1.311.10.3.1 ; szOID_KP_CTL_USAGE_SIGNING ; The following match the [ApplicationPolicyStatementExtension] section: OID = 1.3.6.1.4.1.311.21.54 OID = 1.3.6.1.4.1.311.21.58 OID = 1.3.6.1.4.1.311.21.64 OID = 1.3.6.1.4.1.311.21.66 CriticAL = False ; =========================================================== ; Cross Certificate Distribution Points Extension ; szOID_CROSS_CERT_DIST_POINTS 1.3.6.1.4.1.311.10.9.1 ; top level section ; =========================================================== [CrossCertificateDistributionPointsExtension] SyncDeltaTime = 24 URL = http://%1/Public/My CA.crt URL = ftp://foo.com/Public/MyCA.crt URL = file://\\%1\Public\My CA.crt CriticAL = false
[Version] Signature= "$Windows NT$" ;[CAPolicy] [PolicyStatementExtension] Policies = LegalPolicy, LimitedUsePolicy, ExtraPolicy, OIDPolicy, EmptyPolicy Critical = 0 [LegalPolicy] OID = 1.3.6.1.4.1.311.21.43 Notice = "Legal policy statement text." [LimitedUsePolicy] OID = 1.3.6.1.4.1.311.21.47 URL = "http://http.site.com/some where/default.asp" URL = "ftp://ftp.site.com/some where else/default.asp" Notice = "Limited use policy statement text." URL = "ldap://ldap.site.com/some where else again/default.asp" [ExtraPolicy] OID = 1.3.6.1.4.1.311.21.53 URL = http://extra.site.com/Extra Policy/default.asp [oidpolicy] OID = 1.3.6.1.4.1.311.21.55 [emptypolicy] ; For CRLDistributionPoint, AuthorityInformationAccess and ; CrossCertificateDistributionPointsExtension URLs: ; ; #define wszFCSAPARM_SERVERDNSNAME L"%1" ; #define wszFCSAPARM_SERVERSHORTNAME L"%2" ; #define wszFCSAPARM_SANITIZEDCANAME L"%3" ; #define wszFCSAPARM_CERTFILENAMESUFFIX L"%4" ; #define wszFCSAPARM_DOMAINDN L"%5" ; #define wszFCSAPARM_CONFIGDN L"%6" ; #define wszFCSAPARM_SANITIZEDCANAMEHASH L"%7" ; #define wszFCSAPARM_CRLFILENAMESUFFIX L"%8" ; #define wszFCSAPARM_CRLDELTAFILENAMESUFFIX L"%9" ; #define wszFCSAPARM_DSCRLATTRIBUTE L"%10" ; #define wszFCSAPARM_DSCACERTATTRIBUTE L"%11" ; #define wszFCSAPARM_DSUSERCERTATTRIBUTE L"%12" ; #define wszFCSAPARM_DSKRACERTATTRIBUTE L"%13" ; #define wszFCSAPARM_DSCROSSCERTPAIRATTRIBUTE L"%14" ; ; Setup APIs replace all %<number>% sequences with various directory paths. ; %3%8%9 in the first URL below presents two opportunities for string ; replacement with a directory path. To avoid this, use two percent signs ; to escape the setup API string replacement. ; ; URLs with spaces or commas must be quoted to avoid INF parsing problems ; ; default CDP registry URLs: ; ; D:\WINDOWS\System32\CertSrv\CertEnroll\%3%8%9.crl ; ldap:///CN=%7%8,CN=%2,CN=CDP,CN=Public Key Services,CN=Services,%6%10 ; http://%1/CertEnroll/%3%8%9.crl ; file://\\%1\CertEnroll\%3%8%9.crl [AuthorityInformationAccess] URL = http://%1/Public/My CA.crt URL = ftp://foo.com/Public/MyCA.crt URL = file://\\%1\Public\My CA.crt CriticAL = falSe [CRLDistributionPoint] URL = http://%1/Public/My CA.crl URL = ftp://%1/Public/MyCA.crl URL = file://\\%1\Public\My CA.crl CriticAL = trUe [CrossCertificateDistributionPointsExtension] SyncDeltaTime = 600 ; in seconds URL = http://%1/Public/My CCDP.crl URL = ftp://%1/Public/MyCCDP.crl URL = file://\\%1\Public\My CCDP.crl CriticAL = yeS [EnhancedKeyUsageExtension] OID = 1.3.6.1.4.1.311.21.6 ; szOID_KP_KEY_RECOVERY_AGENT OID = 1.3.6.1.4.1.311.10.3.9 ; szOID_ROOT_LIST_SIGNER OID = 1.3.6.1.4.1.311.10.3.1 ; szOID_KP_CTL_USAGE_SIGNING CriticAL = False [basicconstraintsextension] pathlength = 13 criticaL=falsE [certsrv_server] renewalkeylength=2048 RenewalValidityPeriodUnits=0x18 RenewalValidityPeriod=years CRLPeriod = days CRLPeriodUnits = 2 CRLDeltaPeriod = hours CRLDeltaPeriodUnits = 4
PKCS7/CMS Message:
CMSG_SIGNED(2)
CMSG_SIGNED_DATA_CMS_VERSION(3)
Content Type: 1.3.6.1.5.5.7.12.2 CMC Data
PKCS7 Message Content:
================ Begin Nesting Level 1 ================
CMS Certificate Request:
Tagged Attributes: 2
Body Part Id: 2
1.3.6.1.5.5.7.7.8 CMC Extensions
Value[0]:
Data Reference: 0
Cert Reference[0]: 1
Extensions: 7
2.5.29.36: Flags = 0, Length = 8
Policy Constraints
Required Explicit Policy Skip Certs=0
Inhibit Policy Mapping Skip Certs=0
2.5.29.32: Flags = 0, Length = 10
Certificate Policies
429.195.0: 0x80070002 (WIN32: 2): LDAPFlags
[1]Certificate Policy:
Policy Identifier=Corporate High Assurance
1.3.6.1.4.1.311.21.10: Flags = 0, Length = 6c
Application Policies
[1]Application Certificate Policy:
Policy Identifier=Client Authentication
[2]Application Certificate Policy:
Policy Identifier=Smart Card Logon
[3]Application Certificate Policy:
Policy Identifier=Corporate RAS
[4]Application Certificate Policy:
Policy Identifier=Private Key Archival
[5]Application Certificate Policy:
Policy Identifier=Key Recovery Agent
[6]Application Certificate Policy:
Policy Identifier=Encrypting File System
[7]Application Certificate Policy:
Policy Identifier=Secure Email
[8]Application Certificate Policy:
Policy Identifier=Certificate Request Agent
2.5.29.30: Flags = 0, Length = bf
Name Constraints
Permitted
[1]Subtrees (0..Max):
Other Name:
Principal Name=.asia.northwindtraders.com
[2]Subtrees (0..Max):
RFC822 Name=@northwindtraders.com
[3]Subtrees (0..Max):
RFC822 Name=.northwindtraders.com
[4]Subtrees (0..Max):
DNS Name=.asia.northwindtraders.com
[5]Subtrees (0..Max):
Directory Address:
DC=ASIA
DC=Northwindtraders
DC=com
[6]Subtrees (0..Max):
URL=
[7]Subtrees (0..Max):
IP Address=
Excluded=None
1.3.6.1.4.1.311.20.2: Flags = 0, Length = c
Certificate Template Name
SubCA
2.5.29.15: Flags = 0, Length = 4
Key Usage
Digital Signature, Certificate Signing, Off-line CRL Signing, CRL Signing (86)
2.5.29.19: Flags = 1(Critical), Length = 5
Basic Constraints
Subject Type=CA
Path Length Constraint=None
Body Part Id: 3
1.3.6.1.5.5.7.7.18 Reg Info
Value[0]:
CertificateTemplate: SubCA
Tagged Requests: 1
CMC_TAGGED_CERT_REQUEST_CHOICE:
Body Part Id: 1
================ Begin Nesting Level 2 ================
Element 0:
PKCS10 Certificate Request:
Version: 1
Subject:
CN=ITG ASIA Corp CA 1
DC=asia
DC=Northwindtraders
DC=com
Public Key Algorithm:
Algorithm ObjectId: 1.2.840.113549.1.1.1 RSA
Algorithm Parameters:
05 00
Public Key Length: 2048 bits
Public Key: UnusedBits = 0
0000 30 82 01 0a 02 82 01 01 00 c4 92 eb 3d e3 70 52
0010 23 9f 9e a0 6c 9e 1e 26 43 7e 9c a3 d1 82 56 88
0020 5f df 2d a3 c6 f2 0a ae 25 8b 4e c8 7c 2b a2 4a
0030 72 49 ff 48 46 d9 59 6b 9e 1e 76 1a ff a9 1b 29
0040 30 4f a7 00 0f 73 3d 16 6b 4c 57 cd 2b c5 3d 78
0050 82 81 4a 90 26 b7 8b d4 b1 c4 08 ea 77 2a c2 f8
0060 8e e9 93 98 47 21 96 8e f9 9d ac bc 5f 01 f9 09
0070 12 b6 73 70 9a 2e 35 1c 51 d0 74 54 ee 46 7e 92
0080 03 5e d4 86 10 86 02 8b 8c 38 7e 76 10 55 0b 92
0090 1d 85 b9 46 d7 eb c2 42 3d a4 3d 84 d7 1f dd 93
00a0 30 ae 96 57 76 05 5d 2f 6e d0 7f 17 21 c2 87 1b
00b0 82 0c 02 da 10 87 48 ec c6 ba 45 45 75 22 3f 9a
00c0 f8 1f c6 10 05 08 01 d5 fa 56 25 a3 19 2c da e0
00d0 74 f6 43 9a c1 4d ed b6 9e 83 91 35 d0 c9 c3 6b
00e0 72 2f b0 3c fd 05 27 35 7b ea 8b 9d 48 83 96 59
00f0 bf b9 d3 80 b1 14 71 8e 75 e1 c9 da 69 86 4e cc
0100 9a 00 01 83 f5 0f 4b 2e 55 02 03 01 00 01
Request Attributes: 2
2 attributes:
Attribute[0]: 1.3.6.1.4.1.311.13.2.3 (OS Version)
Value[0][0]:
5.1.3541.2.
Attribute[1]: 1.2.840.113549.1.9.14 (Certificate Extensions)
Value[1][0]:
Unknown Attribute type
Certificate Extensions: 6
1.3.6.1.4.1.311.21.1: Flags = 0, Length = 3
CA Version
V1.0
1.3.6.1.4.1.311.21.2: Flags = 0, Length = 16
Previous CA Certificate Hash
d3 e5 cc ef 88 53 0d 13 b7 ae a2 7b 19 5f 57 5e 33 62 b0 ef
2.5.29.14: Flags = 0, Length = 16
Subject Key Identifier
d3 b6 48 1a c0 76 07 ba 35 2b 1c 90 8b bc 1f 2b d3 b9 4d f8
1.3.6.1.4.1.311.20.2: Flags = 0, Length = c
Certificate Template Name
SubCA
2.5.29.15: Flags = 0, Length = 4
Key Usage
Digital Signature, Certificate Signing, Off-line CRL Signing, CRL Signing (86)
2.5.29.19: Flags = 1(Critical), Length = 5
Basic Constraints
Subject Type=CA
Path Length Constraint=None
Signature Algorithm:
Algorithm ObjectId: 1.2.840.113549.1.1.5 sha1RSA
Algorithm Parameters:
05 00
Signature: UnusedBits=0
0000 a1 4b fa 5b ec 6c 4d e8 e4 a4 2d 7f 4b b9 65 cb
0010 61 1e d5 85 49 e9 07 9c c5 8b 9b e2 a4 b5 18 26
0020 76 33 d9 3d 66 2e 32 2c e8 a5 23 65 9f 07 0a d6
0030 d3 d0 3f 1a ac ef 75 2d 53 0d 79 13 90 6f e3 61
0040 ab bb ad 31 e9 46 31 b4 78 33 3e 7d 4f d4 87 3c
0050 cf 75 0a 03 51 f0 f4 f3 15 25 b8 d8 5f bb d4 78
0060 5d a9 39 34 1d d7 f9 8a 8d 3c 4e 1f ea 79 23 ce
0070 85 42 8f 36 c2 24 d2 9f 90 37 93 80 d4 f2 76 74
0080 ad 65 a0 7e 83 fc 83 21 ea e5 d8 c9 5f 02 ea d0
0090 9f 50 96 3a b5 c3 7f 85 9b b8 fc cd 68 c5 27 c5
00a0 99 d6 5f df 8f 8b 82 7b 0f 21 f0 3d 9f 34 0c d8
00b0 ec 2b b1 a9 55 c7 01 2d 9e f0 89 76 d3 ed d6 33
00c0 55 8a 9a c7 8d 52 3e b1 5d da 35 61 28 f7 07 73
00d0 57 52 80 ac c0 31 ad 9e 81 49 01 1f 48 1f f4 95
00e0 9f 39 4b 1a be 33 c6 4b cf 67 04 5b aa 94 59 4d
00f0 d4 95 42 6f 25 d3 64 fc d6 c8 e7 ca e3 b3 0a ad
Signature matches Public Key
Key Id Hash(sha1): d3 b6 48 1a c0 76 07 ba 35 2b 1c 90 8b bc 1f 2b d3 b9 4d f8
---------------- End Nesting Level 2 ----------------
Tagged Content Info: 0
Tagged Other Messages: 0
---------------- End Nesting Level 1 ----------------
Signer Count: 2
Signer Info[0]:
NULL signature verifies
CMSG_SIGNER_INFO_PKCS_1_5_VERSION(1)
CERT_ID_ISSUER_SERIAL_NUMBER(1)
Serial Number: 00
Issuer: OID.1.3.6.1.4.1.311.21.9=Dummy Signer
Hash Algorithm:
Algorithm ObjectId: 1.3.14.3.2.26 sha1
Algorithm Parameters: NULL
Encrypted Hash Algorithm:
Algorithm ObjectId: 1.3.6.1.5.5.7.6.2 NO_SIGN
Algorithm Parameters: NULL
Encrypted Hash:
0000 75 80 82 26 ff 11 77 5b 92 52 ce 2e a2 8e a2 32
0010 98 a7 1a a0
Authenticated Attributes[0]:
3 attributes:
Attribute[0]: 1.2.840.113549.1.9.3 (Content Type)
Value[0][0]:
Unknown Attribute type
1.3.6.1.5.5.7.12.2 CMC Data
Attribute[1]: 1.2.840.113549.1.9.4 (Message Digest)
Value[1][0]:
Unknown Attribute type
Message Digest:
5a 74 12 86 78 3a ab 5b 17 85 6f 4d 44 ea a2 74 2c 86 c1 1f
Attribute[2]: 1.3.6.1.4.1.311.21.20 (Client Information)
Value[2][0]:
Unknown Attribute type
Client Id: = 4
XECI_CERTREQ -- 4
User: ASIA\user2
Machine: user2.asia.northwindtraders.com
Process: certreq
Unauthenticated Attributes[0]:
0 attributes:
Computed Hash: 75 80 82 26 ff 11 77 5b 92 52 ce 2e a2 8e a2 32 98 a7 1a a0
Signing Certificate Index: 1
-------- CERT_CHAIN_CONTEXT --------
ChainContext.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
CertContext.dwRevocationFreshnessTime: 27 Days, 4 Hours, 47 Minutes, 46 Seconds
SimpleChain.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
SimpleChain.dwRevocationFreshnessTime: 27 Days, 4 Hours, 47 Minutes, 46 Seconds
CertContext[0][0]: dwInfoStatus=101 dwErrorStatus=0
Issuer: CN=W2K User Enrollment CA, OU=Test, O=NT Distributed Systems, L=Redmond,
S=WA, C=US, E=user1@northwindtraders.com
Subject: CN=Darren Canavor
Serial: 61321aaf00000000061e
Template: EnrollmentAgent
54 8e 6f e3 d6 88 31 29 b6 f0 fb be bd aa 91 12 76 dd 51 a3
Element.dwInfoStatus = CERT_TRUST_HAS_EXACT_MATCH_ISSUER (0x1)
Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
419.2199.0: 0x80070002 (WIN32: 2)
CRL 0:
Issuer: CN=W2K User Enrollment CA, OU=Test, O=NT Distributed Systems,
L=Redmond, S=WA, C=US, E=user1@northwindtraders.com
4b f3 03 53 8b d0 82 f5 bf aa b7 d1 ee fc aa 3e 12 74 b5 fe
Application[0] = 1.3.6.1.4.1.311.20.2.1 Certificate Request Agent
CertContext[0][1]: dwInfoStatus=101 dwErrorStatus=0
Issuer: E=user1@northwindtraders.com, CN=ASIA W2K PCA, OU=Test, O=NT
Distributed Systems, L=Redmond, S=WA, C=US
Subject: CN=W2K User Enrollment CA, OU=Test, O=NT Distributed Systems,
L=Redmond, S=WA, C=US, E=user1@northwindtraders.com
Serial: 4860d04700020000bc47
Template: SubCA
fa 4b b5 e1 a6 9f 8d e9 1d 69 4b f4 42 9f 76 0b ef a9 c8 d9
Element.dwInfoStatus = CERT_TRUST_HAS_EXACT_MATCH_ISSUER (0x1)
Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
419.2199.0: 0x80070002 (WIN32: 2)
CRL 0:
Issuer: E=user1@northwindtraders.com, CN=ASIA W2K PCA, OU=Test, O=NT
Distributed Systems, L=Redmond, S=WA, C=US
a7 a0 41 a8 90 71 0f 02 60 b1 28 bf 47 3b 4e 48 20 24 58 74
CertContext[0][2]: dwInfoStatus=102 dwErrorStatus=0
Issuer: CN=ASIA SA Root CA, OU=Asia, O=Northwindtraders, C=US
Subject: E=user1@northwindtraders.com, CN=ASIA W2K PCA, OU=Test, O=NT
Distributed Systems, L=Redmond, S=WA, C=US
Serial: 1f54dfa100000000001d
Template: SubCA
61 0b 95 b6 06 ba 14 4c ae 89 24 9d 83 fd 06 49 9b ca 82 60
Element.dwInfoStatus = CERT_TRUST_HAS_KEY_MATCH_ISSUER (0x2)
Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
CRL 49:
Issuer: CN=ASIA SA Root CA, OU=Asia, O=Northwindtraders, C=US
78 9e e3 0f 30 ed 2f d5 6e ec b1 9b 59 93 9b b9 b3 36 bb 8e
CertContext[0][3]: dwInfoStatus=10c dwErrorStatus=0
Issuer: CN=ASIA SA Root CA, OU=Asia, O=Northwindtraders, C=US
Subject: CN=ASIA SA Root CA, OU=Asia, O=Northwindtraders, C=US
Serial: 212566f75e7584b8478f7b59b4a9e212
Template: CA
9e 90 bb 26 24 e4 da dc 63 11 b8 18 2d af ad 39 56 81 66 51
Element.dwInfoStatus = CERT_TRUST_HAS_NAME_MATCH_ISSUER (0x4)
Element.dwInfoStatus = CERT_TRUST_IS_SELF_SIGNED (0x8)
Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
CRL 49:
Issuer: CN=ASIA SA Root CA, OU=Asia, O=Northwindtraders, C=US
78 9e e3 0f 30 ed 2f d5 6e ec b1 9b 59 93 9b b9 b3 36 bb 8e
Exclude leaf cert:
ea 88 66 a8 e8 c0 2d 50 c6 b0 21 a8 4d fb 87 2d 0b 8a da 83
Full chain:
7c c0 2c 86 ba 49 40 95 45 4c 0c 7f e1 f7 07 d3 88 f1 8d d4
------------------------------------
Verified Issuance Policies: None
Verified Application Policies:
1.3.6.1.4.1.311.20.2.1 Certificate Request Agent
Signer Info[1]:
Signature matches Public Key
CMSG_SIGNER_INFO_PKCS_1_5_VERSION(1)
CERT_ID_ISSUER_SERIAL_NUMBER(1)
Serial Number: 61321aaf00000000061e
Issuer: CN=W2K User Enrollment CA, OU=Test, O=NT Distributed Systems,
L=Redmond, S=WA, C=US, E=user1@northwindtraders.com
Subject: CN=Darren Canavor
Hash Algorithm:
Algorithm ObjectId: 1.3.14.3.2.26 sha1
Algorithm Parameters: NULL
Encrypted Hash Algorithm:
Algorithm ObjectId: 1.2.840.113549.1.1.1 RSA
Algorithm Parameters: NULL
Encrypted Hash:
0000 91 d8 40 e2 fc d7 9f dd da 2a 16 ed 6e b4 62 39
0010 08 c9 0b 08 c6 7a 19 8e f4 7a af ee a0 c8 e5 5a
0020 54 90 d3 bb f8 89 cf e8 3f e4 7a 33 45 1e 6b 09
0030 29 a2 4a 3d e0 28 fe d8 45 15 59 67 74 f4 ab 03
0040 82 d8 89 11 e6 bd 1a 5f 3b 73 02 a4 f8 be 9f f9
0050 d2 65 cc 2a b1 47 d4 d1 ce 8f 1d 51 be 5e 5b 92
0060 a7 79 da 80 4e 5e e5 72 3c 76 84 61 34 d4 42 f2
0070 da 4d 4b 17 ec 34 53 9b 2c 86 71 60 82 47 54 1e
Authenticated Attributes[1]:
3 attributes:
Attribute[0]: 1.2.840.113549.1.9.3 (Content Type)
Value[0][0]:
Unknown Attribute type
1.3.6.1.5.5.7.12.2 CMC Data
Attribute[1]: 1.2.840.113549.1.9.4 (Message Digest)
Value[1][0]:
Unknown Attribute type
Message Digest:
5a 74 12 86 78 3a ab 5b 17 85 6f 4d 44 ea a2 74 2c 86 c1 1f
Attribute[2]: 1.3.6.1.4.1.311.21.20 (Client Information)
Value[2][0]:
Unknown Attribute type
Client Id: = 4
XECI_CERTREQ -- 4
User: ASIA\user2
Machine: user2.asia.northwindtraders.com
Process: certreq
Unauthenticated Attributes[1]:
0 attributes:
Computed Hash: 75 80 82 26 ff 11 77 5b 92 52 ce 2e a2 8e a2 32 98 a7 1a a0
No Recipient
Certificates:
================ Begin Nesting Level 1 ================
Element 0:
X509 Certificate:
Version: 3
Serial Number: 4860d04700020000bc47
Signature Algorithm:
Algorithm ObjectId: 1.2.840.113549.1.1.5 sha1RSA
Algorithm Parameters:
05 00
Issuer:
E=user1@northwindtraders.com
CN=ASIA W2K PCA
OU=Test
O=NT Distributed Systems
L=Redmond
S=WA
C=US
NotBefore: 6/26/2001 1:03 PM
NotAfter: 6/7/2002 11:41 AM
Subject:
CN=W2K User Enrollment CA
OU=Test
O=NT Distributed Systems
L=Redmond
S=WA
C=US
E=user1@northwindtraders.com
Public Key Algorithm:
Algorithm ObjectId: 1.2.840.10040.4.1 DSA
Algorithm Parameters:
0000 30 82 01 1e 02 81 81 00 a1 13 9a 69 07 1f 39 de
0010 e8 f2 6f 24 0b 80 91 67 a1 f5 b4 d0 e5 24 65 3c
0020 2e f1 48 0c ef 3e e9 5d 1c fe 9a 47 1b 3e d3 41
0030 ba c4 c5 c1 6e 55 9c b2 c4 dc 0b 9a 1a a1 12 f6
0040 45 a5 32 f6 8d d3 50 79 e1 f0 1e 75 70 6b aa a8
0050 75 fb 99 bd 74 75 a8 b1 05 b0 a6 fd 4e 20 fa 9d
0060 9d 5e 79 51 9b 19 b0 c3 62 dd c2 a3 c1 ad af f6
0070 00 6b f7 70 3a 7e 22 e1 a9 d1 df 2f fc 53 d5 04
0080 95 b2 6c 7a 0c c4 52 5f 02 15 00 ee 57 07 f1 1f
0090 44 e7 75 0b d2 a0 f9 65 0a ec b8 dc 7c ad 6d 02
00a0 81 80 38 5d bc e4 06 1c 6c 16 70 54 7c 3a 65 d0
00b0 f3 bb 08 83 90 d0 b1 1b ea 53 90 23 8b b7 2e e2
00c0 a0 16 b7 11 41 31 20 f2 2c 56 a9 f3 8d 2b e8 74
00d0 32 c0 7e f4 90 a1 0f 30 c1 5e df e3 c7 a4 20 90
00e0 73 6a 02 bb eb 46 31 bd 29 70 45 e7 d7 43 22 86
00f0 55 33 e5 b9 d7 ac 4f 0b d4 53 5f ec 9c ae 34 0c
0100 14 35 7e 7f ad 0c 2d 50 4c ea 7d 47 34 1a 19 0b
0110 63 a3 1a 4a 3a 4d b8 4a 8a 7d b1 36 48 64 d0 f7
0120 e2 41
Public Key Length: 1024 bits
Public Key: UnusedBits = 0
0000 02 81 80 6f be 7e 8d a2 4c d2 4a c2 bb dc 71 9c
0010 85 d5 d3 0c e7 df d0 8e a5 85 2b d2 5b a4 a1 0d
0020 a8 55 1b d6 4b 04 2d 56 f8 0a a7 78 8b 1f d1 73
0030 b7 3e 2a af 1e 21 13 c6 4e 98 ce 88 4c 34 60 d1
0040 4c a4 80 4e 1c 76 ad 8e dd 60 6c f0 22 55 47 95
0050 09 3b 93 75 51 11 eb 7c 74 4a a1 72 2c cf d4 28
0060 ef 60 f0 8a 18 eb 4a 19 24 93 c0 27 3f af 55 98
0070 d6 1b 69 63 4a a6 7b f7 69 92 77 4c 28 60 f8 97
0080 6c a2 d0
Certificate Extensions: 7
2.5.29.14: Flags = 0, Length = 16
Subject Key Identifier
0a 2f e7 66 09 39 b6 c3 9d 96 9a 49 ff 75 73 fd 72 80 92 45
1.3.6.1.4.1.311.20.2: Flags = 0, Length = c
Certificate Template Name
SubCA
2.5.29.15: Flags = 0, Length = 4
Key Usage
Certificate Signing, Off-line CRL Signing, CRL Signing (06)
2.5.29.19: Flags = 1(Critical), Length = 5
Basic Constraints
Subject Type=CA
Path Length Constraint=None
2.5.29.35: Flags = 0, Length = 76
Authority Key Identifier
KeyID=7a fc 16 de 56 19 08 a3 39 21 5d 55 0f f2 57 be 8f 5e c7 7f
Certificate Issuer:
Directory Address:
CN=ASIA SA Root CA
OU=Asia
O=Northwindtraders
C=US
Certificate SerialNumber=1f 54 df a1 00 00 00 00 00 1d
2.5.29.31: Flags = 0, Length = 11c
CRL Distribution Points
[1]CRL Distribution Point
Distribution Point Name:
Full Name:
URL=ldap:///CN=ASIA%20W2K%20PCA,CN=W2KPCA,CN=CDP,CN=Public%20Key%20Services,CN=S
ervices,CN=Configuration,DC=asia,DC=Northwindtraders,DC=com?certificateRevocatio
nList?base?objectclass=cRLDistributionPoint
[2]CRL Distribution Point
Distribution Point Name:
Full Name:
URL=http://w2kpca.asia.northwindtraders.com/CertEnroll/ASIA%20W2K%20PCA.crl
1.3.6.1.5.5.7.1.1: Flags = 0, Length = 130
Authority Information Access
[1]Authority Info Access
Access Method=Certification Authority Issuer (1.3.6.1.5.5.7.48.2)
Alternative Name:
RL=ldap:///CN=ASIA%20W2K%20PCA,CN=AIA,CN=Public%20Key%20Services,CN=Services,CN=
Configuration,DC=asia,DC=Northwindtraders,DC=com?cACertificate?base?objectclass=
certificationAuthority
[2]Authority Info Access
Access Method=Certification Authority Issuer (1.3.6.1.5.5.7.48.2)
Alternative Name:
URL=http://w2kpca.asia.northwindtraders.com/CertEnroll/W2KPCA.asia.northwindtrad
ers.com_ASIA%20W2K%20PCA(2).crt
Signature Algorithm:
Algorithm ObjectId: 1.2.840.113549.1.1.5 sha1RSA
Algorithm Parameters:
05 00
Signature: UnusedBits=0
0000 70 a2 0e c9 94 30 81 83 43 33 1b b3 6a 83 ae a5
0010 2a 1f fc c9 d8 28 ae 7e b3 a2 fb c2 f0 be 8a 3b
0020 31 e9 bc e2 80 1c 9d 5a 5c 08 db 79 df 7f 88 5e
0030 7c e2 90 fe 9b e5 83 20 b5 7b 2b 2c 86 bb 22 c4
0040 4e 9e 09 3c 6a c1 c0 35 57 85 82 a3 07 b4 ca e5
0050 d8 48 38 33 ec b2 f2 11 56 c4 83 2c 27 2e 9b 19
0060 7e 9c 62 5a 8f 10 78 16 3c 36 c3 19 fc 7f 63 38
0070 b8 eb ab 24 7a 45 86 ec 25 b0 b0 63 b0 2e 98 91
0080 54 13 6d c3 eb d7 c3 42 10 64 49 19 cf 20 d5 55
0090 18 bb a6 fd 5b ff 12 5a 88 62 22 12 5a 02 1e de
00a0 e2 21 e8 fa d2 83 6e 13 fd 55 3b ca 8a 56 27 8d
00b0 28 79 3c 15 df 58 79 4c ce fb d9 44 d4 fc 7f 6b
00c0 92 6b 67 3c e6 29 b2 ed 6a 30 0f 89 75 ab 9e 04
00d0 6b 31 ec e0 79 76 c3 51 cd 91 1e 13 cd 1e 06 8d
00e0 ce c8 c9 9b cb 14 23 88 ae e0 c3 1f 18 56 ae 55
00f0 a6 15 c5 95 18 61 5e 65 b6 24 9e c8 ca 87 fe 20
Non-root Certificate
Key Id Hash(sha1): 0a 2f e7 66 09 39 b6 c3 9d 96 9a 49 ff 75 73 fd 72 80 92 45
Cert Hash(md5): d4 8e c5 46 fa 21 77 2a 32 f0 8c 28 78 9a a2 92
Cert Hash(sha1): fa 4b b5 e1 a6 9f 8d e9 1d 69 4b f4 42 9f 76 0b ef a9 c8 d9
---------------- End Nesting Level 1 ----------------
================ Begin Nesting Level 1 ================
Element 1:
X509 Certificate:
Version: 3
Serial Number: 61321aaf00000000061e
Signature Algorithm:
Algorithm ObjectId: 1.2.840.10040.4.3 sha1DSA
Algorithm Parameters: NULL
Issuer:
CN=W2K User Enrollment CA
OU=Test
O=NT Distributed Systems
L=Redmond
S=WA
C=US
E=user1@northwindtraders.com
NotBefore: 10/29/2001 6:16 PM
NotAfter: 6/7/2002 11:41 AM
Subject:
CN=Darren Canavor
Public Key Algorithm:
Algorithm ObjectId: 1.2.840.113549.1.1.1 RSA
Algorithm Parameters:
05 00
Public Key Length: 1024 bits
Public Key: UnusedBits = 0
0000 30 81 89 02 81 81 00 eb 8c 61 aa 06 26 3a 0f 74
0010 bb 03 53 94 8e 8b d7 c9 1c b8 af d9 71 12 3a 07
0020 96 fb 15 dd 1f ca d1 14 9e 47 ae aa 79 7d f0 ba
0030 71 3c 02 d7 1a 53 2e fe 56 23 be 64 ee f4 7f 7e
0040 02 68 22 ab f1 8d 94 f6 4f ee e2 45 f6 0e 5f 34
0050 dd c9 60 32 f0 fd 55 6b 4f 3d 5a 8d c3 21 97 ba
0060 a2 6b af 40 b1 ba 59 de 27 15 e4 e4 e3 2f 9f 84
0070 22 92 29 25 88 42 a5 c9 90 84 2e 46 86 32 21 99
0080 1f 52 98 5d 79 d7 eb 02 03 01 00 01
Certificate Extensions: 8
2.5.29.15: Flags = 0, Length = 4
Key Usage
Digital Signature (80)
2.5.29.14: Flags = 0, Length = 16
Subject Key Identifier
3e 09 89 24 b9 c6 f9 68 34 e8 02 1c f5 25 cd 96 6e 13 68 d0
1.3.6.1.4.1.311.20.2: Flags = 0, Length = 20
Certificate Template Name
EnrollmentAgent
2.5.29.35: Flags = 0, Length = ca
Authority Key Identifier
KeyID=0a 2f e7 66 09 39 b6 c3 9d 96 9a 49 ff 75 73 fd 72 80 92 45
Certificate Issuer:
Directory Address:
E=user1@northwindtraders.com
CN=ASIA W2K PCA
OU=Test
O=NT Distributed Systems
L=Redmond
S=WA
C=US
Certificate SerialNumber=48 60 d0 47 00 02 00 00 bc 47
2.5.29.31: Flags = 0, Length = 136
CRL Distribution Points
[1]CRL Distribution Point
Distribution Point Name:
Full Name:
URL=ldap:///CN=W2K%20User%20Enrollment%20CA,CN=w2keobca,CN=CDP,CN=Public%20Key%2
0Services,CN=Services,CN=Configuration,DC=asia,DC=Northwindtraders,DC=com?certif
icateRevocationList?base?objectclass=cRLDistributionPoint
[2]CRL Distribution Point
Distribution Point Name:
Full Name:
URL=http://w2keobca.asia.northwindtraders.com/CertEnroll/W2K%20User%20Enrollment
%20CA.crl
1.3.6.1.5.5.7.1.1: Flags = 0, Length = 147
Authority Information Access
[1]Authority Info Access
Access Method=Certification Authority Issuer (1.3.6.1.5.5.7.48.2)
Alternative Name:
URL=ldap:///CN=W2K%20User%20Enrollment%20CA,CN=AIA,CN=Public%20Key%20Services,CN
=Services,CN=Configuration,DC=asia,DC=Northwindtraders,DC=com?cACertificate?base
?objectclass=certificationAuthority
[2]Authority Info Access
Access Method=Certification Authority Issuer (1.3.6.1.5.5.7.48.2)
Alternative Name:
URL=http://w2keobca.asia.northwindtraders.com/CertEnroll/w2keobca.asia.northwind
traders.com_W2K%20User%20Enrollment%20CA.crt
2.5.29.37: Flags = 0, Length = e
Enhanced Key Usage
Certificate Request Agent (1.3.6.1.4.1.311.20.2.1)
2.5.29.17: Flags = 0, Length = 52
Subject Alternative Name
Other Name:
Principal Name=user2@asia.northwindtraders.com
Signature Algorithm:
Algorithm ObjectId: 1.2.840.10040.4.3 sha1DSA
Algorithm Parameters: NULL
Signature: UnusedBits=0
0000 c2 c8 2e 86 c9 32 ca 80 5c f3 ba 09 08 14 fc 01
0010 ab 87 1c 34 14 02 32 aa 7c af d0 36 8b df ac 24
0020 da 2c a6 7e 21 fc f8 49 da 80 00 15 02 2d 30
Non-root Certificate
Key Id Hash(sha1): 3e 09 89 24 b9 c6 f9 68 34 e8 02 1c f5 25 cd 96 6e 13 68 d0
Cert Hash(md5): 59 6d 1c 02 87 8f 91 08 cb 33 82 c1 d2 4a f8 1c
Cert Hash(sha1): 54 8e 6f e3 d6 88 31 29 b6 f0 fb be bd aa 91 12 76 dd 51 a3
---------------- End Nesting Level 1 ----------------
================ Begin Nesting Level 1 ================
Element 2:
X509 Certificate:
Version: 3
Serial Number: 1f54dfa100000000001d
Signature Algorithm:
Algorithm ObjectId: 1.2.840.113549.1.1.5 sha1RSA
Algorithm Parameters:
05 00
Issuer:
CN=ASIA SA Root CA
OU=Asia
O=Northwindtraders
C=US
NotBefore: 6/7/2001 11:31 AM
NotAfter: 6/7/2002 11:41 AM
Subject:
E=user1@northwindtraders.com
CN=ASIA W2K PCA
OU=Test
O=NT Distributed Systems
L=Redmond
S=WA
C=US
Public Key Algorithm:
Algorithm ObjectId: 1.2.840.113549.1.1.1 RSA
Algorithm Parameters:
05 00
Public Key Length: 2048 bits
Public Key: UnusedBits = 0
0000 30 82 01 0a 02 82 01 01 00 c2 0b 38 8e 77 00 c5
0010 ec 23 62 2f 1f 5a bd f9 72 5f f4 71 25 87 38 ca
0020 1d 8c 1c 07 cb 02 4e 12 43 7a d9 fe db 40 0f b1
0030 ca 98 72 b0 d9 fb 10 37 42 84 72 24 0f 26 36 f8
0040 ab a7 5b 44 a1 0f d7 18 f5 57 d6 e3 79 36 c5 cc
0050 bc af 47 ae b7 5e 0c 0f 3d 76 e7 06 84 af c1 2e
0060 99 90 e4 82 3f 20 d4 d6 bf 0b 37 9e 7f 31 e4 38
0070 b9 32 46 0b 94 0f b3 b9 55 cb f5 03 c9 c4 3b 1c
0080 6a 3b 78 77 06 71 f1 16 ed f9 a6 4b 94 35 00 a4
0090 9a 13 fe fc 7b 7a 8f cd 6e 9b 87 8d de 19 8e 06
00a0 88 ce b5 04 e4 fd 2a 50 a7 1e d5 7a d2 80 f1 e5
00b0 3f 08 2e 55 5e 05 57 97 0e d6 13 d8 6c 16 7d 5e
00c0 10 65 4e 2a 44 cc 5d f9 3d 52 9c d1 1e 15 e0 4d
00d0 a4 ec a1 0f 2f 5a e6 29 d5 4e 45 04 09 fc 45 0e
00e0 11 0f d0 fa d5 8d 0c 41 0d fd 79 69 e2 2a 09 f7
00f0 92 cd 2d fe 4d 61 13 b9 b9 f4 06 fb 78 9a e6 7c
0100 19 e4 1f 22 64 81 89 c7 29 02 03 01 00 01
Certificate Extensions: 8
1.3.6.1.4.1.311.21.1: Flags = 0, Length = 3
CA Version
V2.0
2.5.29.14: Flags = 0, Length = 16
Subject Key Identifier
7a fc 16 de 56 19 08 a3 39 21 5d 55 0f f2 57 be 8f 5e c7 7f
1.3.6.1.4.1.311.20.2: Flags = 0, Length = c
Certificate Template Name
SubCA
2.5.29.15: Flags = 0, Length = 4
Key Usage
Digital Signature, Non-Repudiation, Certificate Signing, Off-line CRL
Signing, CRL Signing (c6)
2.5.29.19: Flags = 1(Critical), Length = 5
Basic Constraints
Subject Type=CA
Path Length Constraint=None
2.5.29.35: Flags = 0, Length = 18
Authority Key Identifier
KeyID=77 c9 74 69 2c 39 fe 38 65 f4 87 05 58 08 ce bd ba 97 da 10
2.5.29.31: Flags = 0, Length = 131
CRL Distribution Points
[1]CRL Distribution Point
Distribution Point Name:
Full Name:
URL=http://whicasarootca.asia.northwindtraders.com/CertEnroll/ASIA%20SA%20Root%20CA.crl
URL=ldap:///CN=ASIA%20SA%20Root%20CA,CN=whicasarootca,CN=CDP,CN=Public%20Key%20S
ervices,CN=Services,CN=Configuration,DC=asia,DC=Northwindtraders,DC=com?certific
ateRevocationList?base?objectClass=cRLDistributionPoint
1.3.6.1.5.5.7.1.1: Flags = 0, Length = 145
Authority Information Access
[1]Authority Info Access
Access Method=Certification Authority Issuer (1.3.6.1.5.5.7.48.2)
Alternative Name:
URL=http://whicasarootca.asia.northwindtraders.com/CertEnroll/whicasarootca.asia
.northwindtraders.com_ASIA%20SA%20Root%20CA.crt
[2]Authority Info Access
Access Method=Certification Authority Issuer (1.3.6.1.5.5.7.48.2)
Alternative Name:
URL=ldap:///CN=ASIA%20SA%20Root%20CA,CN=AIA,CN=Public%20Key%20Services,CN=Servic
es,CN=Configuration,DC=asia,DC=Northwindtraders,DC=com?cACertificate?base?object
Class=certificationAuthority
Signature Algorithm:
Algorithm ObjectId: 1.2.840.113549.1.1.5 sha1RSA
Algorithm Parameters:
05 00
Signature: UnusedBits=0
0000 1f 1b 35 ad 28 ce 75 25 8b 26 18 19 8a 38 60 1c
0010 95 f6 bf d1 fb de 61 76 ba 24 71 97 f6 1d 48 92
0020 df 11 36 f8 40 de 58 20 b1 6a 55 ac 27 f9 8b f7
0030 c2 b6 ca 76 18 8a 47 69 39 28 e0 fd 81 98 3d 07
0040 df 6f 01 12 76 c3 5b 2a 9b 42 d9 b5 9c 40 fd 15
0050 0b 4a 9c 5f 88 17 f7 3a b8 42 90 58 19 88 10 4d
0060 4f 53 cf d8 29 1b 3c 5b c9 c0 f2 ad 13 61 b0 e7
0070 70 b5 25 df 15 0c 36 2a 50 95 b6 8f b7 1d d5 6e
Non-root Certificate
Key Id Hash(sha1): 7a fc 16 de 56 19 08 a3 39 21 5d 55 0f f2 57 be 8f 5e c7 7f
Cert Hash(md5): f2 bf 51 9f 3a d7 37 ec 03 20 79 b5 69 17 c4 26
Cert Hash(sha1): 61 0b 95 b6 06 ba 14 4c ae 89 24 9d 83 fd 06 49 9b ca 82 60
---------------- End Nesting Level 1 ----------------
================ Begin Nesting Level 1 ================
Element 3:
X509 Certificate:
Version: 3
Serial Number: 212566f75e7584b8478f7b59b4a9e212
Signature Algorithm:
Algorithm ObjectId: 1.2.840.113549.1.1.5 sha1RSA
Algorithm Parameters:
05 00
Issuer:
CN=ASIA SA Root CA
OU=Asia
O=Northwindtraders
C=US
NotBefore: 9/20/2000 1:24 PM
NotAfter: 9/20/2002 1:33 PM
Subject:
CN=ASIA SA Root CA
OU=Asia
O=Northwindtraders
C=US
Public Key Algorithm:
Algorithm ObjectId: 1.2.840.113549.1.1.1 RSA
Algorithm Parameters:
05 00
Public Key Length: 1024 bits
Public Key: UnusedBits = 0
0000 30 81 89 02 81 81 00 c7 29 b7 6c 1b 49 f7 77 a9
0010 f5 83 3d 78 5b 6b 25 29 85 03 c3 46 e8 eb 71 4c
0020 a4 4b 2f 2a 2b 5c c6 0d 53 32 ec 76 8c ef 19 67
0030 52 67 09 73 6e f0 13 6a 4c eb ce b8 ae aa ae d0
0040 81 a0 73 26 f4 b4 3a af 32 03 3b 61 a9 fd 23 05
0050 0c ac 1a f4 c7 d4 b1 e2 7a 8d db 98 21 45 38 e5
0060 2d 1a f7 dd 24 66 c4 32 f4 db f1 c4 f4 cb 10 20
0070 3c 9e ce af 45 99 b5 ae fb 7f f0 11 50 d5 96 bf
0080 a8 3b 4c d5 14 85 ed 02 03 01 00 01
Certificate Extensions: 6
1.3.6.1.4.1.311.20.2: Flags = 0, Length = 6
Certificate Template Name
CA
2.5.29.15: Flags = 0, Length = 4
Key Usage
Non-Repudiation, Certificate Signing, Off-line CRL Signing, CRL Signing (46)
2.5.29.19: Flags = 1(Critical), Length = 5
Basic Constraints
Subject Type=CA
Path Length Constraint=None
2.5.29.14: Flags = 0, Length = 16
Subject Key Identifier
77 c9 74 69 2c 39 fe 38 65 f4 87 05 58 08 ce bd ba 97 da 10
2.5.29.31: Flags = 0, Length = ae
CRL Distribution Points
[1]CRL Distribution Point
Distribution Point Name:
Full Name:
URL=http://whicasarootca.asia.northwindtraders.com/CertEnroll/ASIA%20SA%20Root%20CA.crl
URL=file://\\whicasarootca.asia.northwindtraders.com\CertEnroll\ASIA%20SA%20Root%20CA.crl
1.3.6.1.4.1.311.21.1: Flags = 0, Length = 3
CA Version
V0.0
Signature Algorithm:
Algorithm ObjectId: 1.2.840.113549.1.1.5 sha1RSA
Algorithm Parameters:
05 00
Signature: UnusedBits=0
0000 9d 64 9e 14 7c 07 32 06 f7 86 8b a6 fc b9 52 74
0010 31 35 ab 30 98 ee b5 d7 7d 1c 8a 3d f7 a4 89 e2
0020 2c f2 cc f9 ad 93 66 29 95 42 a8 77 a8 1b 7c 1c
0030 4a 4b 25 b1 68 3f 1e db 47 2c e6 46 dd fd c9 b3
0040 28 8a 55 14 c1 a6 64 9d 64 46 90 82 9a 73 55 85
0050 2e 6e 5d ff 19 2c 95 18 fa a1 dc e3 b8 54 bc 9a
0060 c3 3c 1b a7 e0 51 b1 90 3d a7 3b de e3 e8 55 a0
0070 54 40 a4 90 04 37 ff f6 ac a8 cd 24 6f e1 f9 08
Signature matches Public Key
Root Certificate: Subject matches Issuer
Key Id Hash(sha1): 77 c9 74 69 2c 39 fe 38 65 f4 87 05 58 08 ce bd ba 97 da 10
Cert Hash(md5): 51 66 26 77 89 a4 3d 07 f7 62 56 d2 de 0e d8 f6
Cert Hash(sha1): 9e 90 bb 26 24 e4 da dc 63 11 b8 18 2d af ad 39 56 81 66 51
---------------- End Nesting Level 1 ----------------
No CRLs
CertUtil: -dump command completed successfully.