轮换 SSL/TLS CA 证书
编辑轮换 SSL/TLS CA 证书
编辑在某些情况下,您可能需要轮换已配置的证书颁发机构 (CA),例如,如果您选择的 CA 即将过期。请参考以下步骤来轮换连接组件之间的证书
轮换 Fleet Server CA
编辑Elastic Agent 与 Fleet Server 通信以接收策略并检查更新。有两种方法可以在 Fleet Server 上轮换来自 Elastic Agent 连接的 CA 证书。第一种方法要求 Elastic Agent 与 Fleet Server 重新注册一次或多次。第二种方法避免重新注册,并且需要使用新证书覆盖现有的 CA 文件。
选项 1:在 Fleet Server 上使用 Elastic Agent 重新注册来续订即将过期的 CA 证书
使用此方法,配置了旧的或即将过期的 CA 的 Elastic Agent 将使用新的 CA 与 Fleet Server 重新注册。
-
使用新的 Fleet Server CA 更新 Elastic Agent
Elastic Agent 应该已经配置了 CA。使用
elastic-agent enroll
命令来重新注册代理,使用更新的、以逗号分隔的 CA 集。elastic-agent enroll \ --url=<Fleet-Server-URL> \ --enrollment-token=<enrollment-token> \ ... \ --certificate-authorities <original_CA, new_CA>
新的代理注册会导致新的代理出现在 Fleet 中。这可能被认为是破坏性的,但是旧的代理条目将转换为离线状态。需要新的代理注册,以便修改 Fleet Server 配置以接受多个证书颁发机构。
此时,所有 TLS 连接仍然依赖于提供的原始 CA (
original_CA
) 来验证 Fleet Server 证书。 -
轮换 Fleet Server 上的证书
此过程将基于新的 CA 重新颁发新证书。使用所有新证书重新注册 Fleet Server
elastic-agent enroll ... --url=<Fleet-Server-URL> \ --enrollment-token=<enrollment-token> \ ... \ --fleet-server-cert <new_cert> --certificate-authorities <new_CA>
这将导致 Elastic Agent 的 TLS 连接重置,并将相关的新的 CA 和证书加载到 Fleet Server 配置中。
-
Elastic Agent 将在正常操作过程中自动建立新的 TLS 连接
在步骤 1 中安装在代理上的新 CA (
new_CA
) 将用于验证 Fleet Server 使用的证书。请注意,如果原始 CA (
原始 CA
) 被泄露,则可能需要将其从代理的 CA 列表中删除。要实现这一点,您需要再次注册代理elastic-agent enroll ... --url=<Fleet-Server-URL> \ --enrollment-token=<enrollment-token> \ ... \ --certificate-authorities <new_CA>
选项 2:在不重新注册 Elastic Agent 的情况下续订 Elasticsearch 上即将过期的 CA 证书
选项 1 导致多次 Elastic Agent 注册。避免多次注册的另一种方法是用新的 CA 或证书覆盖 CA 文件。此方法使用一个包含多个可以替换的 CA 的单个文件。
要使用此选项,假设
-
Elastic Agent 已经使用包含证书颁发机构的文件注册
elastic-agent enroll ... --url=<Fleet-Server-URL> \ --enrollment-token=<enrollment-token> \ ... \ --certificate-authorities=<CA.pem>
-
运行 Fleet Server 的 Elastic Agent 已经使用以下安全连接选项注册,其中每个选项都指向包含证书和密钥的文件
elastic-agent enroll ... --url=<Fleet-Server-URL> \ --enrollment-token=<enrollment-token> \ ... \ --certificate-authorities=<CA.pem> \ --fleet-server-cert=<fleet-cert.pem> \ --fleet-server-cert-key=<key.pem>
要更新 Elastic Agent 和 Fleet Server 配置
-
通过更改
CA.pem
的内容以包括新的 CA 来更新配置。cat new_ca.pem >> CA.pem
-
重新启动 Elastic Agent。请注意,这不是重新注册。重新启动将强制 Elastic Agent 重新加载 CA。
elastic-agent restart
-
对于运行 Fleet Server 的 Elastic Agent,请使用新的证书覆盖原始
证书
、证书密钥
和证书颁发机构
。cat new-cert.pem > cert.pem cat new-key.pem > key.pem cat new_ca.pem > CA.pem
-
重新启动运行 Fleet Server 的 Elastic Agent。
elastic-agent restart
-
如果需要从 Elastic Agent 中删除原始证书,请仅使用新的 CA 覆盖
CA.pem
cat new_ca.pem > CA.pem
-
最后,再次重新启动 Elastic Agent。
elastic-agent restart
轮换来自 Fleet Server 连接的 Elasticsearch CA
编辑Fleet Server 与 Elasticsearch 通信,以将有关 Elastic Agent 的状态信息发送到 Fleet,并检索更新的策略以发送给注册到给定策略的所有 Elastic Agent。如果您有 部署在本地的 Fleet Server,您可能希望轮换已配置的 CA 证书,例如,如果证书即将过期。
要轮换来自 Fleet Server 连接的 Elasticsearch 上的 CA 证书
-
使用新的 Fleet Server CA 更新 Fleet Server
运行 Fleet Server 的 Elastic Agent 应该已经配置了 CA。使用
elastic-agent enroll
命令来重新注册运行 Fleet Server 的代理,使用更新的、以逗号分隔的 CA 集。elastic-agent enroll \ --fleet-server-es=<Elasticsearch-URL> \ --fleet-server-service-token=<service-token> \ ... \ --fleet-server-es-ca <original_ES_CA, new_ES_CA>
新的代理注册会导致两个 Fleet Server 代理出现在 Fleet 中。这可能被认为是破坏性的,但是旧的代理条目将转换为离线状态。需要新的代理注册,以便修改 Fleet Server 配置以接受多个证书颁发机构。
此时,所有 TLS 连接仍然依赖于提供的原始 CA (
original_ES_CA
) 来验证 Elasticsearch 证书。重新注册 Fleet Server 将导致通过该 Fleet Server 的代理也重置其 TLS,但是连接将根据需要重新建立。 -
轮换 Elasticsearch 上的证书。
Elasticsearch 将使用基于新的 Elasticsearch CA 的新证书。由于 Fleet Server 在链中具有原始和新的 Elasticsearch CA,因此它将接受来自 Elasticsearch 的原始证书和新证书。
请注意,如果原始 Elasticsearch CA (
original_ES CA
) 被泄露,则可能需要将其从 Fleet Server 的 CA 列表中删除。要实现这一点,您需要再次注册 Fleet Server 代理(如果担心重新注册,则使用文件来保存证书和证书颁发机构)elastic-agent enroll \ --fleet-server-es=<Elasticsearch-URL> \ --fleet-server-service-token=<service-token> \ ... \ --fleet-server-es-ca <new_ES_CA>
轮换来自 Elastic Agent 连接的 Elasticsearch CA
编辑使用来自 Fleet Server 提供的策略的配置信息,Elastic Agent 收集数据并将其发送到 Elasticsearch。
要轮换来自 Elastic Agent 连接的 Elasticsearch 上的 CA 证书
- 在 Fleet 中,打开 设置 选项卡。
- 在 输出 部分中,单击需要证书轮换的 Elasticsearch 输出的编辑按钮。
-
在 Elasticsearch CA 可信指纹 字段中,添加要使用的新可信指纹。这是用于自签名 Elasticsearch 证书的证书颁发机构的 SHA-256 指纹(哈希)。此指纹将用于验证 Elasticsearch 提供的自签名证书。
如果在握手期间此证书存在于链中,则会将其添加到
certificate_authorities
列表中,并且握手将正常继续。