注意

本文档适用于 Ceph 开发版本。

证书管理

简介

Cephadmcertmgr作为由 Cephadm 生成的所有自签名证书的根证书颁发机构 (CA)。对于需要 SSL 的服务,管理员可以选择提供自己的证书或允许 Cephadm 生成自签名证书。这确保了安全通信,同时提供了部署偏好的灵活性。

证书管理行为

Cephadmcertmgr自动检测证书是否为自签名(由 Cephadm 生成)或用户提供。这种区别决定了它如何处理过期和续订:

自签名证书

  • certmgr可以完全自动化续订,确保服务无缝运行。

  • 自动化由定义证书持续时间、续订阈值以及是否启用自动轮换的配置参数控制。

用户提供的证书

  • certmgr不自动续订这些证书,但会持续监控其状态。

  • 如果检测到问题(例如,即将过期),它会发出健康警告/错误CEPHADM_CERT_ERROR以提醒管理员,管理员必须手动替换证书。

这种主动方法确保了安全和不间断的服务操作,同时允许用户根据需要管理证书策略。

配置

要管理证书生命周期,certmgr持续监控证书并根据证书类型和配置参数应用续订策略。Cephadm 提供了多种配置选项来管理证书生命周期和续订:

  • mgr/cephadm/certificate_automated_rotation_enabled(默认:True):

  • 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的健康错误。此外,如果证书即将过期,Cephadm 将生成健康警告。这种主动的警报机制帮助管理员在服务中断发生前及时采取行动续订或替换证书。

已知的证书和密钥

The CertMgr类维护一个已知证书和密钥的列表。这些将自动记录如下:

证书范围

Cephadm certmgr 支持三种不同的证书管理范围:

  1. 全局范围:- 此范围内的证书在所有服务守护进程之间共享,无论它们在哪个主机上运行。mgmt-gateway证书是所有服务守护进程使用的全局共享证书。

  2. 每个主机范围:- 证书按主机分配,这意味着每个主机都有自己的唯一证书。grafana服务证书在主机级别配置,并且仅适用于单个机器。

  3. 每个服务范围:- 证书按服务名称配置,这意味着每个服务的实例都可以有自己的证书。rgw服务证书专门分配给 RGW 服务

重新加载证书管理器

运行以下命令从监视器重新加载证书管理器配置:

ceph orch certmgr reload

此命令确保对证书配置所做的任何更改立即应用,而无需重新启动服务。

列出证书

要列出由编排器管理的所有证书:

ceph orch certmgr cert ls [--show-details]

此命令显示 cephadm 当前管理的所有证书的概述。使用--show-details提供更多信息,包括颁发机构和证书扩展。

列出实体

要列出与证书关联的所有实体:

ceph orch certmgr entity ls

实体代表使用管理证书的服务。

检查证书状态

要检查特定证书的状态和有效性:

ceph orch certmgr cert check

此命令验证所有管理证书的完整性和过期状态。

列出证书密钥

要列出与管理证书关联的所有私钥:

ceph orch certmgr key ls

此命令显示 cephadm 当前管理的哪些密钥。

获取证书

要检索特定证书的内容:

ceph orch certmgr cert get <certificate_name> [--service_name <value>] [--hostname <value>] [--no-exception-when-missing]

<certificate-name>替换为从ceph中获取的实际证书名称。对于具有主机或服务范围的证书,根据需要包含--hostname--service_name参数。

获取证书密钥

要检索与特定证书关联的私钥:

ceph orch certmgr key get <key_name> [--service_name <value>] [--hostname <value>] [--no-exception-when-missing]

<key-name>替换为从ceph中获取的实际证书名称。对于具有主机或服务范围的证书,根据需要包含--hostname--service_name参数。

设置证书-密钥对

要将证书与私钥关联:

ceph orch certmgr cert-key set <entity> [--cert <value>] [--key <value>] [--service_name <value>] [--hostname <value>] [-i <cert-key-path>] [--force]

使用此命令上传或替换特定服务的现有证书/密钥对。将<entity-name>替换为从ceph orch certmgr entity 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列出支持的密钥。

生成证书

要自动生成新证书和密钥对:

cehp orch certmgr generate-certificates <module_name>

此命令为指定的管理模块配置新证书。

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.