轮换 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 重新注册。

  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 (原始 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,请使用新的证书覆盖原始 证书证书密钥证书颁发机构

    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

轮换来自 Fleet Server 连接的 Elasticsearch CA

编辑

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

要轮换来自 Fleet Server 连接的 Elasticsearch 上的 CA 证书

  1. 使用新的 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,但是连接将根据需要重新建立。

  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>

轮换来自 Elastic Agent 连接的 Elasticsearch CA

编辑

使用来自 Fleet Server 提供的策略的配置信息,Elastic Agent 收集数据并将其发送到 Elasticsearch。

要轮换来自 Elastic Agent 连接的 Elasticsearch 上的 CA 证书

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

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

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