5.4. 确定子系统证书的要求
CA 配置决定了它发布的证书的很多特征,而不考虑所发布的证书类型。对 CA 自己的有效期周期的限制,区分名称和允许的加密算法会影响其发布的证书中的相同特征。另外,证书管理器具有预定义的配置文件,可为它们发布的不同类型的证书设置规则,并且可以添加或修改其他配置文件。这些配置集配置也会影响发布的证书。
5.4.1. 确定要安装的证书 复制链接链接已复制到粘贴板!
首次安装和配置证书系统子系统时,会自动创建和管理它所需的证书。这包括代理的证书、服务器证书和特定于子系统的证书。这些初始证书显示在 表 5.1 “初始子系统证书” 中。
子系统 | 证书 |
---|---|
证书管理器 |
|
OCSP |
|
KRA |
|
TKS |
|
TPS |
|
在替换现有子系统证书时,需要注意一些注意事项。
为 root CA 创建新的自签名 CA 证书时生成新密钥对,将使之前 CA 证书下发布的所有证书无效。
这意味着 CA 使用旧密钥发布的证书都无法正常工作;从属证书管理器、KRA、TKS 和 TPS 将不再正常工作,代理将不再访问代理接口。
当从属 CA 证书的 CA 证书被替换为新密钥对时,会发生相同的情况;由该 CA 发布的所有证书都无效,且不再可以正常工作。
考虑续订现有 CA 签名证书,而不是从新密钥对创建新证书。
- 如果 CA 配置为发布到 OCSP,并且具有新的 CA 签名证书或新的 CRL 签名证书,则必须再次将 CA 识别为 OCSP。
-
如果为 KRA 创建新的传输证书,必须在 CA 配置文件
CS.cfg
中更新 KRA 信息。现有传输证书必须替换为ca.connector.KRA.transportCert
参数中的新证书。 - 如果克隆 CA,那么当为 master 证书管理器创建新的 SSL/TLS 服务器证书时,克隆 CA 的证书数据库都需要使用新的 SSL/TLS 服务器证书进行更新。
- 如果将证书管理器配置为向 LDAP 目录发布证书和 CRL,并使用 SSL/TLS 服务器证书进行 SSL/TLS 双向身份验证,则必须通过适当的扩展请求新的 SSL/TLS 服务器证书。安装证书后,必须将发布目录配置为使用新的服务器证书。
- 可以为子系统实例发布任意数量的 SSL/TLS 服务器证书,但它实际上只需要一个 SSL/TLS 证书。可以根据需要更新或替换此证书。
5.4.2. 规划 CA 可分辨名称 复制链接链接已复制到粘贴板!
CA 的核心元素是签名单元和证书管理器身份。签名单元数字签名由最终用户实体请求的证书。证书管理器必须具有自己的可分辨名称(DN),该名称列在它的每个证书中。
与其他证书一样,CA 证书将 DN 绑定到公钥。DN 是一系列名称-值对,可唯一标识实体。例如,以下 DN 标识了名为 Example 公司的工程团队的工程团队证书管理器:
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 签名证书为证书签名,或 CRLs 使用签发的证书验证其对证书状态请求的响应;所有子系统都使用日志文件签名其审计日志。
签名密钥必须加密加密,才能为其签名操作提供保护和安全。以下签名算法被视为安全:
- SHA256withRSA
- SHA512withRSA
- SHA256withEC
- SHA512withEC
证书系统包括原生 ECC 支持。也可以加载并使用启用了 ECC 的第三方 PKCS the 模块。
除了密钥类型外,每个密钥都有一个特定的 位长度。较长的密钥被视为比更短的密钥更强。但是,在签名操作时,较长的密钥需要更长的时间。
配置向导中的默认 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 和目录查找,因此原始规格没有涵盖的问题区域。
- 信任.X.500 规格通过严格的目录层次结构建立信任。相反,互联网和 extranet 部署通常涉及分布式信任模型,它们不符合分层 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 Part 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、加密电子邮件或向网站进行身份验证。所有这些证书的要求可能会有所不同,因为对不同类型的用户可能也有不同的要求。这些证书特性在 证书配置文件中设置。证书管理器定义了一组证书配置文件,在用户或机器请求证书时用作注册表单。
证书配置文件
证书配置文件定义了与发布特定类型的证书相关的所有内容,包括身份验证方法、证书内容(默认)、内容值的限制,以及证书配置文件的输入和输出内容。注册请求提交给证书配置文件,然后受该证书配置文件中设置的默认值和约束。这些限制是否通过与证书配置文件关联的输入表单提交,还是通过其他方式提交。从证书配置文件请求发布的证书包含默认值所需的内容以及默认参数所需的信息。约束提供证书中允许的内容的规则。
例如,用户证书的证书配置文件定义了该证书的所有方面,包括证书的有效性周期。默认有效期可以设置为两年,可以在配置文件上设置约束,该配置集可通过此证书配置文件请求的证书的有效性不能超过两年。当用户使用此证书配置文件关联的输入表单来请求证书时,发布的证书包含默认值中指定的信息,并在两年内有效。如果用户为有效期为四年的证书提交预格式化的请求,则请求将被拒绝,因为限制允许这种证书的最大有效期周期。
对于发布的最常见证书,已预定义一组证书配置文件。这些证书配置文件定义了默认值和约束,关联身份验证方法,并为证书配置文件定义所需的输入和输出。
修改证书配置文件参数
可以修改默认证书配置文件的参数;这包括身份验证方法、默认值、每个配置集中使用的约束、分配给配置集中任何参数的值、输入和输出。也可以为其他类型的证书创建新证书配置文件,或者为证书类型创建多个证书配置文件。特定类型的证书配置文件可以有多个证书配置文件,以使用不同的身份验证方法或不同的定义发布不同类型的证书。例如,可以有两个证书配置文件用于注册 SSL/TLS 服务器证书,一个证书配置文件在有效期为 6 个月时发布证书,另一个证书配置文件在有效期为两年后发布证书。
输入以注册形式设置文本字段,以及需要从结束实体收集哪些信息类型;这包括设置要粘贴证书请求的文本区域,它允许在输入表单之外创建请求,其中包含所需任何请求信息。输入值设置为证书中的值。默认输入在证书系统中不可配置。
输出指定如何显示成功注册的响应页面。它通常以用户可读格式显示证书。默认输出显示结果证书的可打印版本;其他输出设置注册结束时生成的信息类型,如 PKCS #7。
策略集是附加到通过配置集处理的每个证书的限制和默认扩展集。扩展定义证书内容,如有效期和主题名称要求。配置集处理一个证书请求,但单个请求可以包含多个证书的信息。PKCS650 请求包含一个公钥。一个 CRMF 请求可以包含多个公钥,这意味着多个证书请求。配置集可以包含多个策略集合,每个策略都指定如何处理 CRMF 请求中的一个证书请求。
证书配置文件管理
管理员通过将现有的身份验证插件或方法与证书配置文件关联来设置证书配置文件;启用和配置默认值和限制;定义输入和输出。管理员可以使用现有证书配置文件、修改现有的证书配置文件、创建新证书配置文件,以及删除此 PKI 中不使用的任何证书配置文件。
设置证书配置文件后,它会出现在代理可以批准的代理服务的 Manage Certificate Profiles 页面中,从而启用证书配置文件。启用证书配置文件后,它会出现在终端实体页面的 Certificate Profile 选项卡中,终端实体可以使用证书配置文件注册证书。
端到端接口中的证书配置文件注册页面包含代理启用的每个证书配置文件的链接。当端点实体选择其中一个链接时,将显示一个注册页面,其中包含特定于该证书配置文件的注册表单。注册页面由为配置文件定义的输入动态生成。如果配置了身份验证插件,则可以添加其他字段来验证用户。
当最终实体提交与代理批准(手动)注册关联的证书配置文件请求时,如果没有配置身份验证插件的注册,证书请求会在代理服务接口中排队。代理可以更改注册、请求、验证它、取消、拒绝它、更新或批准的一些方面。代理可以在不提交请求的情况下更新请求,或者验证请求是否遵循配置集的默认值和限制。此验证过程仅用于验证,不会导致提交请求。代理由约束集绑定,它们无法以违反约束的方式更改请求。签名批准会立即处理,并发布证书。
当证书配置文件与身份验证方法关联时,请求会立即批准,并在用户成功验证时自动生成证书,并提供所有必需的信息,请求不会违反为证书配置文件设置的任何约束。有配置文件策略允许用户提供的设置,如主题名称或有效期。证书配置文件框架也可以保留签发证书的原始证书请求中设置的用户定义的内容。
发布的证书包含此证书配置文件的默认值中定义的内容,如证书的扩展和有效期。证书的内容受每个默认值集的限制。可以为一个配置集设置多个策略(默认和约束),通过使用策略设置 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 节 “使用和自定义证书配置文件” 中,证书进程的 验证 意味着请求证书的用户或实体证明他们是谁是谁。证书系统可以通过三种方式验证实体:
- 在 agent-approved 注册中,最终用户请求会发送到代理进行批准。代理批准证书请求。
- 在 自动注册 中,最终用户请求通过插件进行身份验证,然后处理证书请求;代理不会参与注册过程。
- 在 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 中配置,并选择性地配置为允许证书管理器使用基于证书的身份验证。
- 目录管理员应该配置适当的访问控制规则来控制对 LDAP 目录的 DN (条目名称)和密码的身份验证。
5.4.9. 续订或重新颁发 CA 签名证书 复制链接链接已复制到粘贴板!
当 CA 签名证书过期时,所有使用 CA 对应签名密钥签名的证书都无效。最终实体使用 CA 证书中的信息来验证证书的真实性。如果 CA 证书本身已过期,应用程序无法将证书链接到可信 CA。
解析 CA 证书过期的方法有两种:
- 续订 CA 证书涉及使用与旧 CA 证书相同的主题名称和公钥材料发布新的 CA 证书,但具有延长的有效性周期。只要新 CA 证书在旧 CA 证书过期前被分发到所有用户,续订证书允许在旧 CA 证书下签发的证书继续工作。
- 重新生成 CA 证书涉及使用新名称、公钥和私钥材料和有效期发布新的 CA 证书。这可避免与续订 CA 证书相关的一些问题,但管理员和用户都需要更多工作。旧 CA 发布的所有证书(包括尚未过期的证书)都必须由新 CA 更新。
在续订或恢复 CA 证书时,有问题和优势。在安装任何证书管理器前,开始规划 CA 证书续订或重新颁发,并考虑计划的步骤可能具有扩展、策略和其他 PKI 部署方面。
正确使用扩展(如 authorityKeyIdentifier
扩展)可能会影响从旧 CA 证书转换到新 CA 证书的转换。