5.4. 确定子系统证书的要求
CA 配置决定了它发布的证书的许多特征,无论正在发布的实际证书类型。对 CA 自己的有效期周期的限制,区分名称和允许的加密算法会影响其发布的证书中的相同特征。另外,证书管理器具有预定义的配置集,它为不同的证书类型设置规则,并可添加或修改其他配置集。这些配置集配置也会影响发布的证书。
5.4.1. 确定要安装的证书
首次安装和配置证书系统子系统时,会自动创建访问和管理它所需的证书。这包括代理的证书、服务器证书和特定于子系统的证书。这些初始证书显示在 表 5.1 “初始子系统证书” 中。
子系统 | 证书 |
---|---|
证书管理器 |
|
OCSP |
|
KRA |
|
TKS |
|
TPS |
|
关于替换现有子系统证书有一些注意事项。
为 root CA 创建新自签名 CA 证书时生成新的密钥对,使之前 CA 证书下发布的所有证书都无效。
这意味着,使用其旧密钥的 CA 发布或签名的证书都无法正常工作;从属证书管理器、KRA、OCSP、TKS 和 TPS 将不再正常工作,代理无法再访问代理接口。
当从属 CA 证书的 CA 证书被替换为新密钥对时,会发生相同的情况;由该 CA 发布的所有证书都无效,且不再可以正常工作。
考虑续订现有的 CA 签名证书,而不是从新密钥对创建新证书。
- 如果 CA 配置为发布到 OCSP,并且具有新的 CA 签名证书或新的 CRL 签名证书,则必须将 CA 再次标识到 OCSP。
-
如果为 KRA 创建新的传输证书,必须在 CA 配置文件
CS.cfg
中更新 KRA 信息。现有传输证书必须替换为ca.connector.KRA.transportCert
参数中的新证书。 - 如果克隆了 CA,则在为主证书管理器创建新的 SSL/TLS 服务器证书时,克隆 CA 的证书数据库都需要使用新的 SSL/TLS 服务器证书进行更新。
- 如果证书管理器被配置为发布证书,并将 CRL 发布到 LDAP 目录,并使用 SSL/TLS 服务器证书进行 SSL/TLS 客户端身份验证,那么必须使用适当的扩展来请求新的 SSL/TLS 服务器证书。安装证书后,必须将发布目录配置为使用新的服务器证书。
- 可以为子系统实例发布任意数量的 SSL/TLS 服务器证书,但它实际上只需要一个 SSL/TLS 证书。此证书可以根据需要续订或替换。
5.4.2. 规划 CA 可分辨名称
CA 的核心元素是签名单元和证书管理器身份。签名单元签署终端实体请求的证书。证书管理器必须具有自己的可分辨名称(DN),该名称列在每个证书中。
与其他证书一样,CA 证书将 DN 绑定到公钥。DN 是一系列单独标识实体的 name-value 对。例如,以下 DN 识别了名为 Example Corporation 的公司工程部门的证书管理器:
cn=demoCA, o=Example Corporation, ou=Engineering, c=US
cn=demoCA, o=Example Corporation, ou=Engineering, c=US
对于证书管理器的 DN,可以采用许多名称值对组合。DN 必须是唯一的且易识别,因为任何端点都可以检查它。
5.4.3. 设置 CA 签名证书有效周期
每个证书(包括证书管理器签名证书)都必须具有有效期。证书系统不限制可以指定的有效性周期。根据证书续订的要求、将 CA 放置到证书层次结构中的要求,以及 PKI 中包含的任何公共 CA 的要求,以尽可能设置有效期周期。
证书管理器无法发布有效期超过其 CA 签名证书的有效性周期的证书。如果请求的时间超过 CA 证书有效期周期,则忽略请求的有效期日期,并使用 CA 签名证书有效期。
5.4.4. 选择签名密钥类型和长度
子系统使用签名密钥来验证和"密封"内容。CA 使用 CA 签名证书为证书签名或 CRL,Cryry 使用签名证书来验证其对证书状态请求的响应;所有子系统都使用日志文件签名证书为其审计日志签名。
签名密钥必须经过加密,才能为其签名操作提供保护和安全性。以下签名算法被视为安全:
- SHA256withRSA
- SHA512withRSA
- SHA256withEC
- SHA512withEC
证书系统包括原生 ECC 支持。也可以加载并使用启用了 ECC 的第三方 PKCS facilities 模块。这在 第 7.2 节 “使用 pkispawn
工具安装 RHCS” 中进行了介绍。
除了密钥类型 外,每个密钥都有一个特定的 位长度。较长的密钥比较短的密钥更强。但是,较长的密钥需要更多时间来签名操作。
配置向导中的默认 RSA 密钥长度为 2048 位;对于提供对高度敏感数据或服务的访问的证书,请考虑将长度增加到 4096 位。ECC 密钥比 RSA 密钥更强,因此推荐 ECC 密钥的长度为 256 位,这等同于 2048 位 RSA 密钥。
5.4.5. 使用证书扩展
X.509 v3 证书包含一个扩展字段,允许将任意数量的其他字段添加到证书。证书扩展提供了一种为证书添加其他主题名称和使用限制等信息的方法。较旧的 Netscape 服务器(如 Red Hat Directory Server 和 Red Hat Certificate System)需要 Netscape 特定的扩展,因为它们是在定义了 PKIX 部分 1 标准之前开发的。
X.509 v1 证书规格最初设计为将公钥绑定到 X.500 目录中的名称。当证书开始在互联网上使用时,无法总是执行 extranets 和 directory 查找,因此问题区域会被原始规格涵盖的问题。
- 信任.X.500 规范通过严格的目录层次结构建立信任。相比之下,互联网和额外网络部署通常涉及分布式信任模型,它们不符合分层 X.500 方法。
- 证书使用。有些机构限制了证书的使用方式。例如,一些证书可能仅限于客户端身份验证。
- 多个证书.证书用户没有相同主题名称但不同的密钥材料的多个证书并不常见。在这种情况下,需要确定哪些密钥和证书用于什么目的。
- 备用名称.出于某些目的,具有替代的主题名称也绑定到证书中的公钥非常有用。
- 其他属性。有些机构将其他信息存储在证书中,比如无法在目录中查找信息。
- 与 CA 的关系.当证书链涉及中间 CA 时,可以包含有关嵌入在其证书中的 CA 之间的关系信息。
- CRL 检查。由于并不总是能够针对目录或原始证书颁发机构检查证书撤销状态,因此对证书包含关于检查 CRL 的信息非常有用。
X.509 v3 规范通过更改证书格式来在证书中包含其他信息,方法是定义证书扩展的通用格式,并指定证书中包含的扩展。为 X.509 v3 证书定义的扩展可启用与用户或公钥关联的额外属性,并管理认证层次结构。Internet X.509 公钥基础架构证书和 CRL 配置文件建议一组用于互联网证书和证书或 CA 信息的标准位置的扩展。这些扩展称为 标准扩展。
证书的 X.509 v3 标准允许组织定义自定义扩展并在证书中包含它们。这些扩展称为 私有、专有 或自定义 扩展,它们向组织或业务提供唯一信息。应用程序可能无法验证包含私有关键扩展的证书,因此不建议在广泛使用它们。
X.500 和 X.509 规范由国际电信联合(ITU)控制,这是一个国际组织,主要服务于大型电信公司、政府组织以及与国际电信网络相关的其他实体。Internet Engineering Task Force (IETF),其控制互联网的许多标准目前正在开发公钥基础架构 X.509 (PKIX)标准。这些建议的标准进一步重新定义 X.509 v3 方法,以便在互联网上使用。证书和 CRL 的建议已达到了标准状态,并位于称为 PKIX 第 1 部分的文档中。
其他两个标准是 Abstract Syntax Notation One (ASN.1)和 Distinguished Encoding rules (DER),一般使用证书系统和证书。这些是在 CCITT Recommendations X.208 和 X.209 中指定的。有关 ASN.1 和 DER 的快速摘要,请参阅 Layman 的指南为 ASN.1、BER 和 DER,该指南位于 RSA 实验室器的网站 http://www.rsa.com。
5.4.5.1. 证书扩展的结构
在 RFC 3280 中,X.509 证书扩展定义如下:
Extension ::= SEQUENCE { extnID OBJECT IDENTIFIER, critical BOOLEAN DEFAULT FALSE, extnValue OCTET STRING }
Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING }
这意味着证书扩展由以下内容组成:
-
扩展的对象标识符(OID)。此标识符唯一标识扩展。它还决定了 value 字段中的值的 ASN.1 类型以及如何解释值。当扩展出现在证书中时,OID 显示为扩展 ID 字段(
extnID
),对应的 ASN.1 编码结构显示为 octet 字符串(extnValue
)的值。 名为
critical
的标记或布尔值字段。该值可以是
true
或false
,分配给此字段指示扩展是否为证书的关键还是非关键。 如果扩展至关重要,且证书根据扩展 ID 不理解扩展的应用程序,应用程序必须拒绝该证书。 如果扩展不重要,且证书会根据扩展 ID 不理解扩展的应用程序,应用程序可以忽略扩展并接受证书。- 包含扩展值的 DER 编码的 octet 字符串。
通常,接收证书的应用会检查扩展 ID,以确定它是否可以识别 ID。如果它可以,它会使用扩展 ID 来确定所使用的值类型。
X.509 v3 标准中定义的一些标准扩展包括:
- 颁发机构密钥标识符扩展,用于标识 CA 的公钥,即用于签署证书的密钥。
- 主题密钥标识符扩展,用于标识主题的公钥,即被认证的密钥。
并非所有应用程序都支持版本 3 扩展的证书。支持这些扩展的应用程序可能无法解释这些特定扩展的一些或全部。
5.4.6. 使用和自定义证书配置文件
证书有不同的类型和不同的应用程序。它们可用于为公司网络建立单点登录环境,设置 VPN、加密电子邮件或向网站进行身份验证。所有这些证书的要求都不同,因为对于不同类别用户,同一类型的证书也有不同的要求。这些证书特征在 证书配置文件 中设置。证书管理器定义了一组证书配置文件,在用户或机器请求证书时用作注册表单。
证书配置文件
证书配置文件定义与发布特定类型的证书有关的所有内容,包括身份验证方法、证书内容(defaults)、内容值的限制,以及证书配置文件的输入和输出内容。注册请求将提交至证书配置文件,然后受到该证书配置文件中设置的默认值和约束。无论请求是通过与证书配置文件关联的输入表单还是通过其他方法提交,这些约束就位。从证书配置文件请求发布的证书包含默认值所需的内容,以及默认参数所需的信息。约束为证书中允许的内容提供规则。
例如,用户证书的证书配置文件定义了该证书的所有方面,包括证书的有效性周期。默认有效期可设置为 2 年,约束可以在通过此证书配置文件请求的证书的有效性周期不能超过两年的配置文件。当用户使用与这个证书配置文件关联的输入表单请求证书时,签发的证书包含在默认值中指定的信息,并在两年内有效。如果用户为具有 4 年有效周期的证书提交预格式化的请求,则请求将被拒绝,因为限制允许此类型的证书有效期最多两年。
为发布的最常见证书预定义了一组证书。这些证书配置文件定义默认值和约束,关联身份验证方法,并为证书配置文件定义所需的输入和输出。
修改证书配置文件参数
可以修改默认证书配置文件的参数;这包括身份验证方法、默认值、每个配置文件中使用的约束、分配给配置集中的任何参数的值、输入和输出的值。也可以为其他类型的证书创建新证书配置文件,或者为证书类型创建多个证书配置文件。特定类型的证书可以有多个证书配置文件,以使用不同的身份验证方法发布相同类型的证书,或为默认值和约束的不同定义发布。例如,注册 SSL/TLS 服务器证书有两个证书配置文件,其中一个证书配置文件发布有效期为 6 个月的证书,另一个证书配置文件发布有效期为 2 年的证书。
输入会设置注册表单中的文本字段以及从端点实体收集的所需信息类型;这包括设置要粘贴证书请求的文本区域,这允许在输入表单外创建请求,其中包含所需的任何请求信息。输入值设置为证书中的值。默认输入在证书系统中不可配置。
输出指定如何显示对成功注册的响应页面。它通常以用户可读格式显示证书。默认输出显示结果证书的可打印版本;其他输出设置注册末尾生成的信息类型,如 PKCS #7。
策略集合是一组限制,以及附加到通过配置集处理的每个证书的默认扩展。扩展定义证书内容,如有效期和主题名称要求。配置集处理一个证书请求,但单个请求可以包含多个证书的信息。PKCS#10 请求包含一个公钥。一个 CRMF 请求可以包含多个公钥,这意味着多个证书请求。配置集可以包含多个策略集合,每个策略都指定如何在 CRMF 请求中处理一个证书请求。
证书配置文件管理
管理员通过将现有身份验证插件或方法与证书配置文件相关联来设置证书配置文件;启用和配置默认值和约束;以及定义输入和输出。管理员可以使用现有证书配置文件、修改现有证书配置文件、创建新的证书配置文件,以及删除此 PKI 中不使用的任何证书配置文件。
设置证书配置文件后,它会出现在代理可以批准的代理服务的 Manage Certificate Profiles 页面中,从而启用证书配置文件。启用证书配置文件后,它会出现在终端实体页面的 Certificate Profile 选项卡中,终端实体可以使用证书配置文件注册证书。
最终接口中的证书配置文件注册页面包含到代理启用的每个证书配置文件的链接。当端点选择其中一个链接时,将显示一个注册页面,其中包含特定于该证书配置文件的注册表。注册页面从为配置集定义的输入动态生成。如果配置了身份验证插件,则可以添加额外的字段来验证用户。
当最终实体提交与代理批准(手动)注册关联的证书配置文件请求时,没有配置身份验证插件的注册,证书请求会在代理服务界面中排队。代理可以更改注册、请求、验证、取消、拒绝、更新或批准它的一些方面。代理可以在不提交请求的情况下更新请求,或者验证请求是否遵循配置集的默认值和限制。此验证过程仅用于验证,不会造成提交请求。代理由约束集绑定;它们无法更改请求,从而违反约束。已签名的批准会被立即处理,证书会被发布。
当证书配置文件与身份验证方法关联时,请求会立即批准,并在用户成功验证时自动生成证书,提供所需的所有信息,请求不会违反为证书配置文件设置的任何约束。有允许用户提供的设置(如主题名称或有效期)的配置集策略。证书配置文件框架也可以在发布的证书中的原始证书请求中保留用户定义的内容。
发布的证书包含此证书配置文件的默认值中定义的内容,如证书的扩展和有效期。证书的内容受到为每个默认设置的约束。可以为一个配置集设置多个策略(defaults 和 constraints),通过使用策略设置 ID 中的相同值来区分每个集合。这对处理将加密密钥和签名密钥提交到同一配置集的双密钥注册特别有用。服务器会为其接收的每个请求评估每个集合。发布单个证书时,将评估一个集合,并忽略任何其他集合。发出双密钥对后,将使用第一个证书请求评估第一个集合,并且使用第二个证书请求评估第二个集合。不需要多个集合来发布单个证书或多个集合来发布双密钥对。
自定义证书配置文件的指南
根据机构的实际需求定制配置文件,并预计由机构使用的证书类型:
- 决定 PKI 中需要哪些证书配置文件。发行的每种证书类型应至少有一个配置文件。每种证书可以有多个证书配置文件,来为特定类型的证书类型设置不同的身份验证方法或不同的默认值和约束。管理界面中提供的任何证书配置文件均可由代理批准,然后供终端实体用于注册。
- 删除任何不使用的证书配置文件。
修改公司证书特定特征的现有证书配置文件。
- 更改证书配置文件中设置的默认值、默认值中设置的参数的值,或控制证书内容的限制。
- 通过更改参数的值来更改设置的限制。
- 更改身份验证方法。
- 通过在证书配置文件中添加或删除输入来更改输入,该输入控制输入页上的字段。
- 添加或删除输出。
5.4.6.1. 在 SSL 服务器证书中添加 SAN 扩展
证书系统可在安装非 root CA 或其他证书系统实例时,为 SSL 服务器证书添加主题备用名称(SAN)扩展。要做到这一点,请按照 /usr/share/pki/ca/profiles/ca/caInternalAuthServerCert.cfg
文件中的说明进行操作,并将以下参数添加到 pkispawn
工具中提供的配置文件中:
pki_san_inject
-
将此参数设置为
True
。 pki_san_for_server_cert
- 提供用逗号(,)分隔所需的 SAN 扩展列表。
例如:
pki_san_inject=True pki_san_for_server_cert=intca01.example.com,intca02.example.com,intca.example.com
pki_san_inject=True
pki_san_for_server_cert=intca01.example.com,intca02.example.com,intca.example.com
5.4.7. 规划验证方法
在 第 5.4.6 节 “使用和自定义证书配置文件” 中,证书进程的 验证 意味着请求证书的用户或实体证明他们是谁是谁。证书系统可以通过三种方式验证实体:
- 在 代理批准的 注册中,最终用户请求将发送到代理以进行批准。代理批准证书请求。
- 在 自动注册 中,最终用户请求使用插件进行身份验证,然后处理证书请求;代理不会涉及注册过程。
- 在 CMC 注册 中,第三方应用程序可以创建由代理签名的请求,然后自动处理。
最初为代理批准注册和 CMC 身份验证配置证书管理器。通过配置其中一个身份验证插件模块来启用自动注册。可以在子系统的单一实例中配置多个身份验证方法。HTML 注册页面包含指定使用方法的隐藏值。使用证书配置文件时,每个启用的配置集都会动态生成最终用户注册页面。与此证书配置文件关联的身份验证方法在动态生成的注册页面中指定。
身份验证过程很简单。
- 最终实体提交注册请求。用于提交请求的表单标识了身份验证和注册方法。所有 HTML 表单都由配置集动态生成,它会自动将适当的身份验证方法与表单关联。
- 如果身份验证方法是代理批准的注册,则请求将发送到 CA 代理的请求队列。如果设置了队列中请求的自动通知,则会发送电子邮件到收到新请求的相应代理。代理可以根据该表单和配置集限制修改请求。批准后,请求必须传递为证书管理器设置的证书配置文件,然后发布证书。发布证书时,它存储在内部数据库中,并可通过终端实体通过序列号或请求 ID 从终端实体检索。
- 如果身份验证方法是自动的,则最终实体将提交请求以及验证用户身份所需的信息,如 LDAP 用户名和密码。当成功验证用户时,请求会被处理,而不会发送到代理的队列。如果请求通过证书管理器的证书配置文件配置,则会发布证书并存储在内部数据库中。它通过 HTML 表单立即发送到终端实体。
对证书请求的验证方式的要求可以直接影响所需的子系统和配置文件设置。例如,如果代理批准的注册要求代理符合个人请求者,并通过支持的文档验证其身份,则身份验证过程可能会非常耗时,并由代理和请求者的物理可用性的限制。
5.4.8. 发布证书和 CRL
CA 可以发布证书和 CRL。证书可以发布到普通文件或 LDAP 目录;也可以使用 CRL 发布到文件或 LDAP 目录,也可以发布给 OCSP 响应程序来处理证书验证。
配置发布非常简单,可轻松调整。但是,为了实现连续性和可访问性,最好计划证书和 CRL 需要发布的位置,以及哪些客户端需要访问它们。
发布到 LDAP 目录需要目录中的特殊配置才能发布:
- 如果证书发布到目录中,超过签发证书的每个用户或服务器必须在 LDAP 目录中具有对应的条目。
- 如果 CRL 发布到目录中,超过它们必须发布到签发它们的 CA 的条目。
- 对于 SSL/TLS,必须在 SSL/TLS 中配置目录服务,并选择性地进行配置以允许证书管理器使用基于证书的身份验证。
- 目录管理员应配置适当的访问控制规则,以控制 DN (条目名称)和密码对 LDAP 目录的身份验证。
5.4.9. 续订或重新颁发 CA 签名证书
当 CA 签名证书过期时,所有使用 CA 对应签名密钥签名的证书都无效。最终实体使用 CA 证书中的信息来验证证书的真实性。如果 CA 证书本身已过期,应用程序无法将证书链接到可信 CA。
解析 CA 证书过期的方法有两种:
- 续订 CA 证书涉及使用与旧 CA 证书相同的主题名称和公钥和私钥材料发布一个新的 CA 证书,但具有延长的有效性周期。只要新 CA 证书在旧 CA 证书过期前向所有用户分发,续订证书允许旧 CA 证书下发布的证书在有效期内继续工作。
- Reissuing a CA 证书涉及使用新名称、公钥和私钥材料发布新的 CA 证书以及有效期。这可避免与更新 CA 证书有关的一些问题,但它需要更多工作才能使管理员和用户实施。旧 CA 发布的所有证书(包括尚未过期的证书)都必须由新 CA 更新。
续订或重新颁发 CA 证书时可能会有问题和优势。在安装任何证书管理器前,开始规划 CA 证书续订或恢复,并考虑计划的流程在 PKI 部署的其他方面具有扩展、策略和其他方面。
正确使用扩展(如 authorityKeyIdentifier
扩展)可能会影响从旧 CA 证书转换到新 CA 证书的转换。