注意
本文档适用于 Ceph 的开发版本。
证书管理
简介
Cephadm certmgr 充当 Cephadm 生成的所有自签名证书的根证书颁发机构 (CA)。对于需要 SSL 的服务,管理员可以选择自带证书或允许 Cephadm 生成自签名证书。这确保了安全的通信,同时为部署偏好提供了灵活性。
证书管理行为
Cephadm certmgr 会自动检测证书是自签名(由 Cephadm 生成)还是用户提供(作为嵌入值在 spec 中,或外部引用)。这种区别决定了它如何处理过期和续订
自签名证书
certmgr可以完全自动化续订,确保服务无缝运行。自动化由配置参数控制,这些参数定义了证书持续时间、续订阈值以及是否启用自动轮换。
用户提供的证书
有两种类型
内联 (Inline):嵌入在服务 spec 中的证书;不能通过
certmgr直接修改。引用 (Reference):通过
certmgr设置和管理的证书;必须手动上传。
有关 certmgr 如何处理用户提供的证书过期的详细信息,请参阅证书健康监测。
配置
为了管理证书生命周期,certmgr 持续监控证书并根据证书类型和配置参数应用续订策略。Cephadm 提供了几个配置选项来管理证书生命周期和续订
mgr/cephadm/certificate_automated_rotation_enabled(默认:True):默认启用,此配置选项控制 Cephadm 是否在证书过期时自动轮换证书。这有助于确保连续性和安全性,无需手动干预。禁用时,cephadm 仍会定期检查证书,但不会自动续订过期的自签名证书,而是在检测到问题时发出健康错误/警告。mgr/cephadm/certificate_duration_days(默认:3 * 365, 最小:90, 最大:10 * 365):指定由 Cephadm 根 CA 生成和签名的自签名证书的持续时间(天)。这决定了续订所需的有效期。mgr/cephadm/certificate_renewal_threshold_days(默认:30, 最小:10, 最大:90):定义在证书过期前多少天 Cephadm 应该开始续订。这确保了在过期发生之前及时替换。这适用于自签名和用户提供的证书。对于用户提供的证书,Cephadm 将发出健康错误或警告,提醒管理员即将到来的续订期。mgr/cephadm/certificate_check_period(默认:1, 最小:0, 最大:30):指定检查证书有效性的频率(天)。这确保及时检测与证书过期相关的任何问题。将其设置为0将禁用证书检查功能。
证书健康监测
Cephadm 持续监控所有托管证书的状态,包括自签名和用户提供的证书。
如果证书无效或已经过期,Cephadm 会发出健康错误 (
CEPHADM_CERT_ERROR) 来提醒管理员。如果证书即将到期,如配置的
mgr/cephadm/certificate_renewal_threshold_days所确定,Cephadm 会发出健康警告。
如果启用了自动化,自签名证书将由 Cephadm 自动续订,但用户提供的证书无法自动续订。在任何一种情况下,Cephadm 都会提醒管理员,以便他们及时采取行动。这种主动监控有助于确保不间断的服务运行,同时让用户控制其证书策略。
SSL 配置的 Spec 字段
所有支持 SSL/TLS 的服务 spec 都可以选择定义以下字段
ssl: 布尔值,用于启用/禁用 SSL。ssl_cert: 证书内容 (用于inline) 或名称 (用于reference)。ssl_key: 密钥内容 (用于inline) 或名称 (用于reference)。certificate_source:inline、reference或cephadm_signed之一。
如果 certificate_source 是 reference 且证书丢失,用户需要使用以下 certmgr 命令上传证书
ceph orch certmgr cert set --cert-name <cert-name> --service-name <service-name> -i <cert-key-pem-file>
证书范围
Cephadm certmgr 支持三种不同的证书管理范围
全局范围
此范围内的证书在所有服务守护程序之间共享,无论它们运行在哪个主机上。
示例:
mgmt-gateway证书是一个全局共享证书,供所有服务守护程序使用。
每主机范围
证书按主机分配,意味着每个主机都有自己唯一的证书。
配置自定义证书时,用户必须指定证书适用的主机。
示例:
grafana服务证书配置在主机级别,专门应用于单个机器。
每服务范围
证书按服务名称配置(每个服务实例可以有自己的证书)。
指定自定义证书时,用户必须定义它所属的服务。
示例:
rgw服务证书专门分配给 RGW 服务。
列出证书
要列出所有由 Cephadm 管理的证书
ceph orch certmgr cert ls [--show-details] [--include-cephadm-signed] [--filter-by <expression>]
此命令显示当前由 Cephadm 管理的所有证书的概览。 --show-details 选项包括其他信息,例如颁发机构和证书扩展。
默认情况下,此命令会省略 Cephadm 签名的证书。要包括它们,请传递 --include-cephadm-signed 参数。
示例
ceph orch certmgr cert ls --include-cephadm-signed
ceph orch certmgr cert ls --filter-by "status=expired"
ceph orch certmgr cert ls --filter-by "scope=service,status=expiring"
ceph orch certmgr cert ls --include-cephadm-signed --filter-by "name=rgw*,status=valid"
列出实体
显示与托管证书相关联的所有实体。
ceph orch certmgr bindings ls
列出使用者(服务)与 certmgr 管理的证书/密钥之间的所有当前证书绑定。
检查证书状态
要检查特定证书的状态和有效性
ceph orch certmgr cert check
此命令验证所有托管证书的完整性和过期状态。
列出证书密钥
要列出与托管证书相关联的所有私钥
ceph orch certmgr key ls [--include-cephadm-signed]
此命令显示当前由 cephadm 管理的密钥。默认情况下,此命令会省略 Cephadm 签名的密钥。要包括它们,请传递 --include-cephadm-signed 参数。
检索证书
要检索特定证书的内容
ceph orch certmgr cert get <certificate_name> [--service_name <value>] [--hostname <value>] [--no-exception-when-missing]
使用 ceph orch certmgr bindings ls 列出的 <service-name>。对于具有主机或服务范围的证书,根据需要包括 --hostname 或 --service_name 参数。
检索证书密钥
要检索与特定证书相关联的私钥
ceph orch certmgr key get <key_name> [--service_name <value>] [--hostname <value>] [--no-exception-when-missing]
将 <key-name> 替换为 ceph orch certmgr key ls 中的实际证书名称。对于具有主机或服务范围的证书,根据需要包括 --hostname 或 --service_name 参数。
设置证书-密钥对
要将证书与私钥关联
ceph orch certmgr cert-key set <service-type> [--cert <value>] [--key <value>] [--service_name <value>] [--hostname <value>] [-i <cert-key-path>] [--force]
使用此命令上传或替换特定服务的现有证书/密钥对。将 <service-type> 替换为 ceph orch certmgr bindings ls 中的实际证书名称。 -i 选项可用于指定包含 PEM 格式的组合证书和密钥的文件。此文件应包括串联在一起的证书和私钥。
设置证书
要更新或设置新证书
ceph orch certmgr cert set <certificate_name> [--cert <value>] [--service_name <value>] [--hostname <value>] [-i <cert-path>]
使用此命令添加或替换现有证书。
设置私钥
要更新或设置新私钥
ceph orch certmgr key set <key-name> [--key <value>] [--service_name <value>] [--hostname <value>] [-i <key-path>]
此命令允许管理员为服务提供新的私钥。
移除证书
要移除现有证书
ceph orch certmgr cert rm <certificate_name> [--service_name <value>] [--hostname <value>]
注意: 对于具有主机或服务范围的证书,使用 --service-name 或 --hostname 选项来指定目标。
<certificate_name> 必须是有效的证书名称。使用 ceph orch certmgr cert ls 列出支持的证书。
移除私钥
要移除现有私钥
ceph orch certmgr key rm <key-name> [--service_name <value>] [--hostname <value>]
注意: 对于具有主机或服务范围的密钥,使用 --service-name 或 --hostname 选项来指定目标。
<key_name> 必须是有效的密钥名称。使用 ceph orch certmgr key ls 列出支持的密钥。
生成证书
要自动生成新的证书和密钥对
ceph orch certmgr generate-certificates <module_name>
此命令为指定的 Manager module 预配新证书。它通常用于需要自动 TLS 预配的指定模块(例如,dashboard)。