准备创建专用证书
您可以通过配置专用证书引擎来启用 IBM Cloud® Secrets Manager 服务实例以生成专用证书。
在 Secrets Manager中,专用证书引擎充当 private_cert
私钥类型的后端。 专用证书是可以在服务中签名,发放和管理的 SSL/TLS 证书。 必须先通过为证书创建 认证中心(CA)发放数字证书的第三方可信组织或公司。 认证中心通常会对被授予唯一证书的个人进行身份验证。
和有效的信任链来启用服务实例,然后才能创建专用证书。
了解证书层次结构
通过 Secrets Manager,您可以通过创建认证中心 (CA) 来构建自己的公用密钥基础结构 (PKI) 系统,该认证中心可以签署证书并向应用程序发放 SSL/TLS 证书。 通过就位证书链,您可以使用 Secrets Manager 实例为客户机和服务器应用程序创建 专用证书。
有效的证书链从可信根 CA 开始,通过一个或多个下级 CA 传递,并以颁发给最终实体应用程序的叶证书结束。 例如,检出以下简单 CA 层次结构:
-
根 CA 充当整个证书链的信任锚。
-
级别 2 中的下级 CA 由根 CA 签署和发放。 这些下级 CA 签署其他下级 CA 证书。
-
最后,级别为 3 的下级 CA 证书会对您的最终实体应用程序进行签名并发放叶证书。
在 Secrets Manager中,叶证书是您创建并部署到应用程序的 专用证书。
设计 CA 层次结构
通过 Secrets Manager,您可以在服务实例中创建最多 10 个包含多个分支和层次结构的根 CA 和 10 个中间 CA。
权限类型 | 描述 |
---|---|
根认证中心 | 证书链的信任锚。 在证书层次结构中,根 CA 位于证书链的顶部。 此 CA 用于对下级 CA 的证书 (例如中间 CA) 进行签名。 |
中间认证中心 | 用于签署和发放其他中间 CA 证书的下级或下级认证中心。 中间 CA 还用于向结束实体 (例如客户机或服务器应用程序) 发放叶证书。 在 Secrets Manager中,可以创建 内部或外部签名 的中间 CA。 |
规划 CA 层次结构
作为最佳实践,请规划与组织结构对应的认证中心层次结构。 通常,您可以实现下列其中一个公共 CA 结构。
两个级别: 根 CA 和下级 CA
如果工作负载需要最简单的 CA 结构,请使用此选项。 在此场景中,您将创建单个可信根 CA。 然后,创建下级 CA (例如 中间 CA) 以向应用程序和服务发放叶证书。
三个级别: 根 CA 和两个下级 CA
如果工作负载需要根 CA 和较低级别 CA 操作之间的额外层,请使用此选项。 在此场景中,中间下级 CA 仅用于签署向应用程序发放叶证书的下级 CA。
设置 CA 层次结构的深度
在 Secrets Manager中创建认证中心时,可以设置 最大路径长度 参数以确定其权限链中可以存在的 CA 证书数量。 此值强制实施 CA 的证书路径中可以存在的 CA 证书数量。
通常,您可以配置不限制其认证路径中可创建的下级 CA 数量的根 CA。 但是,在下级 CA 上定义最大路径长度是避免配置错误的 CA 的重要安全步骤。 根据下级 CA 在层次结构中的位置,请确保指定最大路径长度,以便其签名权限仅限于期望的深度。
您定义的最大路径长度不包括叶证书。 在先前的示例中,级别为 4 的下级 CA 可以发出叶证书,但无法在其路径中具有更多 CA 证书。
选择证书的有效期
X.509 证书的有效期是一个必填字段,用于确定证书可信并保持有效的时间长度。 规划 CA 层次结构时,请从要向应用程序发放的叶证书的首选生命周期开始向后工作。 然后,确定 CA 证书的有效期。
证书的有效期必须短于或等于颁发证书的 CA 的有效期。 例如,如果创建生存时间 (TTL) 为 10 年的根 CA,那么从属于该 CA 的任何中间 CA 都必须具有等于或小于 10 年的 TTL。 同样,如果中间 CA 的 TTL 为 3 年,那么任何叶证书都必须具有等于或小于 3 年的 TTL。
-
选择适用于您的用例的叶证书的有效期。
可以使用 Secrets Manager 创建的专用证书被视为可以发放到最终实体 (例如客户机或服务器应用程序) 的叶证书。 通过 Secrets Manager,您可以创建最长有效期为 3 年或 36 个月的证书。 确定叶证书的 TTL 或有效期后,通过使用 证书模板 来设置值,以便在每次生成新叶证书时应用首选 TTL。
叶证书的 TTL 越短,您就越容易受到保护,以免您的证书及其专用密钥受到无意的暴露或损害。 缩短证书的有效期意味着降低了发生损害的可能性,但这也要求您更频繁地轮换证书以确保其保持有效。 为避免意外中断,您可以调度专用证书的 自动轮换。
-
选择下级 CA 的有效期。
作为最佳实践,请为下级 CA 证书设置比其发放的证书的有效期长得多的有效期。 定义父 CA 的有效期,该有效期是其发放的任何子 CA 证书或叶证书的 2 到 5 倍。 例如,如果您具有 二级 CA 层次结构,并且要使用一年的 TTL 来发放叶证书,请使用三年的 TTL 来配置下级发放 CA。 您始终可以在不替换根 CA 证书的情况下更新下级 CA 证书。
-
选择根 CA 的有效期。
更新根 CA 证书时,此更改会影响整个公用密钥基础结构。 为最大限度减少影响,建议您为根 CA 证书设置较长的有效期。 在 Secrets Manager中,根证书的缺省 TTL 为 10 年。
选择密钥管理服务
在 Secrets Manager 中创建证书颁发机构之前,必须选择一个密钥管理服务 (KMS),以便为 CA 生成公钥和私钥。 您可以选择内部 KMS 私有证书引擎,在这种情况下,CA 公钥和私钥在软件中创建,由服务内部管理。 您也可以选择在外部硬件安全模块 (HSM) 中管理密钥。Secrets Manager 支持 IBM Cloud Hyper Protect Crypto Services (HPCS) 管理 CA 密钥。 您可以配置 CA 使用 HPCS 私有密钥库中的现有密钥,或允许 Secrets Manager 为 CA 创建新密钥。
Secrets Manager 私有证书引擎使用 PKCS#11 API 与 HPCS 通信。 身份验证和授权使用 IAM API 密钥完成,该密钥使用 Secrets Manager IAM 凭据密文进行管理。 加密签名操作在 HPCS 中进行,CA 私钥材料永远不会离开加密设备。
注意:Secrets Manager 不控制与使用 HPCS 中的密钥创建 CA 证书相关的成本或费率限制。
准备在 HPCS 中创建带有密钥的 CA
您的账户中应已配置 HPCS 实例。 In your HPCS instance create a private keystore to be used for the CA keys.
按照 HPCS 文档中的说明设置 PKCS #11 正常用户类型。
-
创建自定义 IAM 角色
-
创建 IAM 服务 ID
注意:不要为服务 ID 创建 API 密钥。 API 密钥将由 Secrets Manager
- 为服务 ID 分配 IAM 角色
- 将自定义角色分配给服务 ID
- 为 HPCS 实例的服务 ID 分配查看器角色。
在 Secrets Manager 实例中:
- 配置 IAM 凭据引擎
- 创建新的 IAM 凭据密文,并配置以下内容:
- 设置
Lease duration
- 启用
Reuse IAM credentials until lease expires
已启用 - 启用
Automatic secret rotation
- 向为验证 HPCS 而创建的服务 ID 分配访问权限
- 设置
选择用于生成密钥的算法
在 Secrets Manager中创建认证中心之前,必须选择用于为 CA 生成公用密钥和专用密钥的密钥算法。 公用和专用密钥对用于认证 SSL/TLS 连接。 如果您不确定从何处开始,那么可以使用以下建议的指南来选择密钥算法。
-
选择算法系列。
您选择的密钥算法确定要用于生成密钥和签署证书的加密算法和密钥大小。 作为最佳实践,请对属于证书链的所有证书使用相同的算法系列。Secrets Manager 支持以下算法系列。
支持的算法系列和密钥大小 算法系列 描述 支持的密钥大小 RSA RSA 广泛使用并与大多数浏览器和服务器兼容,是公用密钥密码术的行业标准。 2048 位
4096 位椭圆曲线 (EC) 生成更强的密钥和更小的证书。 例如,256 位 EC 密钥在加密强度上等同于 3072 位 RSA 密钥。 224 位
256 位
384 位
521 位 -
选择密钥大小。
您选择的密钥大小或长度确定加密强度。 算法系列的密钥大小越大,越难以破解。 请记住,较长的密钥长度会导致更多数据要存储和传输,这会影响证书的性能。 作为最佳实践,请选择适合于证书的 TTL 或有效期的密钥大小。
对于寿命更长的证书,建议使用更长的密钥长度来提供更多的加密保护。
使用认证中心未认证的端点
如果要将 CA 在 Secrets Manager 中发放的叶证书用于应用程序,请使用以下 API 调用来获取对发放 CA 证书撤销列表 (CRL) 和 CA 证书的访问权。
读取证书撤销列表
使用该端点,可以检索原始 DER 编码形式的当前 CRL。 如果将 /pem
添加到端点,那么将以 PEM 格式返回 CRL。
GET v1/ibmcloud/private_cert/config/certificate_authorities/:ca-name/crl(/pem)
Response 200 OK
<binary DER-encoded CRL>
要验证您的叶 CA 证书或中间 CA 证书是否未从叶证书的上下文中撤销,您可以使用属性 "crl_distribution_points_encoded": true
配置 CA。 此配置对用于在属性 (例如,每个叶或中间 CA 证书中的 X509v3 CRL Distribution Points
) 中下载发出 CA CRL 的 URL 进行编码。 然后,CA 验证器可以检查是否撤销了叶 CA 证书或中间
CA 证书。
读取 CA 证书
使用此端点,您可以原始 DER 编码格式检索 CA 证书。 如果将 /pem
添加到端点,那么将以 PEM 格式返回 CA 证书。
GET v1/ibmcloud/private_cert/config/certificate_authorities/:ca-name/ca(/pem)
Response 200 OK
<binary DER-encoded certificate >
读取 CA 证书链
您可以使用此端点检索 CA 证书链,其中包含 PEM 格式的 CA。 此端点是裸的。 它不会返回标准 Vault 数据结构,并且 Vault CLI 无法读取该数据结构。
GET v1/ibmcloud/private_cert/config/certificate_authorities/:ca-name/ca_chain
Response 200 OK
<PEM-encoded certificate chain>
要验证 CA 链是否来自叶证书的上下文,可以使用属性 "issuing_certificates_urls_encoded": true
在 Secrets Manager 中配置 CA。 在每个叶 CA 证书或中间 CA 证书中,此配置对用于在属性 Authority Information Access/CA Issuers
中下载发放 CA 证书的 URL 进行编码。 然后,CA 验证器可以验证每个
CA 证书。
后续步骤
现在,您已准备好为实例创建认证中心。