轮换 SSL/TLS CA 证书

编辑

在某些情况下,您可能希望轮换已配置的证书颁发机构 (CA),例如,如果所选 CA 即将过期。请参阅以下步骤,了解如何在连接的组件之间轮换证书。

轮换 Fleet Server CA

编辑

Elastic Agent 与 Fleet Server 通信以接收策略并检查更新。有两种方法可以在 Fleet Server 上轮换 CA 证书以用于来自 Elastic Agent 的连接。第一种方法需要 Elastic Agent 重复注册 Fleet Server 一次或多次。第二种方法避免了重新注册,并需要用新的证书覆盖现有的 CA 文件。

选项 1:通过 Elastic Agent 重新注册来更新 Fleet Server 上即将过期的 CA 证书

使用此方法,配置了旧的或即将过期的 CA 的 Elastic Agent 将使用新的 CA 重新注册 Fleet Server。

  1. 使用新的 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 证书进行身份验证。

  2. 轮换 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 配置中。

  3. Elastic Agent 将作为其正常操作的一部分自动建立新的 TLS 连接。

    步骤 1 中安装的代理上的新 CA (new_CA) 将用于对 Fleet Server 使用的证书进行身份验证。

    请注意,如果原始 CA (original 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 配置

  1. 通过更改 CA.pem 的内容以包含新的 CA 来更新配置。

    cat new_ca.pem >> CA.pem
  2. 重新启动 Elastic Agent。请注意,这不是重新注册。重新启动将强制 Elastic Agent 重新加载 CA。

    elastic-agent restart
  3. 对于运行 Fleet Server 的 Elastic Agent,请使用新的证书覆盖原始的 certificatecertificate-keycertificate-authority

    cat new-cert.pem > cert.pem
    cat new-key.pem > key.pem
    cat new_ca.pem > CA.pem
  4. 重新启动运行 Fleet Server 的 Elastic Agent。

    elastic-agent restart
  5. 如果需要从 Elastic Agent 中删除原始证书,请仅使用新的 CA 覆盖 CA.pem

    cat new_ca.pem > CA.pem
  6. 最后,再次重新启动 Elastic Agent。

    elastic-agent restart

轮换 Elasticsearch CA 以用于来自 Fleet Server 的连接

编辑

Fleet Server 与 Elasticsearch 通信,将有关 Elastic Agent 的状态信息发送到 Fleet,并检索更新的策略以发送到注册到给定策略的所有 Elastic Agent。如果您已 在本地部署 Fleet Server,则可能希望轮换已配置的 CA 证书,例如,如果证书即将过期。

轮换 Elasticsearch 上的 CA 证书以用于来自 Fleet Server 的连接

  1. 使用新的 Fleet Server CA 更新 Fleet Server

    运行 Fleet Server 的 Elastic Agent 应该已经配置了 CA。使用 elastic-agent enroll 命令使用更新的、逗号分隔的 CA 集重新注册运行 Fleet Server 的代理。

    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 中出现两个 Fleet Server 代理。这可能会被认为是中断性的,但是旧的代理条目将转换为脱机状态。需要新的代理注册才能修改 Fleet Server 配置以接受多个证书颁发机构。

    此时,所有 TLS 连接仍在依赖最初提供的 CA (original_ES_CA) 以对 Elasticsearch 证书进行身份验证。重新注册 Fleet Server 将导致通过该 Fleet Server 的代理也重置其 TLS,但连接将根据需要重新建立。

  2. 轮换 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>

轮换 Elasticsearch CA 以用于来自 Elastic Agent 的连接

编辑

Elastic Agent 使用 Fleet Server 传递的策略中的配置信息收集数据并将其发送到 Elasticsearch。

轮换 Elasticsearch 上的 CA 证书以用于来自 Elastic Agent 的连接

  1. 在 Fleet 中打开 设置 选项卡。
  2. 输出 部分中,单击需要证书轮换的 Elasticsearch 输出的编辑按钮。
  3. Elasticsearch CA 可信指纹 字段中,添加要使用的新可信指纹。这是用于自签名 Elasticsearch 证书的证书颁发机构的 SHA-256 指纹(哈希值)。此指纹将用于验证 Elasticsearch 提供的自签名证书。

    如果此证书在握手期间存在于链中,它将添加到 certificate_authorities 列表中,握手将正常继续。

    Screen capture of the Edit Output UI: Elasticsearch CA trusted fingerprint