为自管理 Fleet Server 配置 SSL/TLS
编辑为自管理 Fleet Server 配置 SSL/TLS
编辑如果您运行的是自管理集群,请配置传输层安全 (TLS) 以加密 Elastic Agent、Fleet Server 和 Elastic Stack 中其他组件之间的流量。
有关与双向 TLS 相反的互信 TLS 的特定安装设置,请参阅 具有互信 TLS 的 Elastic Agent 部署模型。
有关使用单向或互信 TLS 在组件之间建立 TLS 的流程摘要,请参阅 单向和互信 TLS 证书流程。
我们在 Elastic Cloud 上提供的 托管 Elasticsearch 服务 可开箱即用地提供安全、加密的连接!
先决条件
编辑配置 Elastic Stack 的安全性和生成证书。有关保护 Elastic Stack 的更多信息,请参阅 为 Elastic Stack 配置安全。
Elastic Agent 需要一个 PEM 格式的 CA 证书才能将加密数据发送到 Elasticsearch。如果您按照 为 Elastic Stack 配置安全 中的步骤操作,您的证书将位于 p12 文件中。要进行转换,请使用 OpenSSL
openssl pkcs12 -in path.p12 -out cert.crt -clcerts -nokeys openssl pkcs12 -in path.p12 -out private.key -nocerts -nodes
目前不支持密钥密码。
当您使用 Elastic Defend 集成运行 Elastic Agent 时,用于连接到 Fleet Server 和 Elasticsearch 的 TLS 证书 需要使用 RSA 生成。有关在配置 TLS 或 mTLS 时可用的算法的完整列表,请参阅 为独立 Elastic Agent 配置 SSL/TLS。这些设置适用于独立和 Fleet 管理的 Elastic Agent。
为 Fleet Server 生成自定义证书和私钥
编辑本节介绍如何使用 Elasticsearch 提供的 certutil
工具,但您可以使用通常用于生成 PEM 格式证书的任何流程。
-
生成证书颁发机构 (CA)。如果您要使用现有的 CA,请跳过此步骤。
./bin/elasticsearch-certutil ca --pem
此命令创建一个 zip 文件,其中包含您将用于签署 Fleet Server 证书的 CA 证书和密钥。解压缩 zip 文件
将文件存储在安全的位置。
-
使用证书颁发机构为 Fleet Server 生成证书。例如
./bin/elasticsearch-certutil cert \ --name fleet-server \ --ca-cert /path/to/ca/ca.crt \ --ca-key /path/to/ca/ca.key \ --dns your.host.name.here \ --ip 192.0.2.1 \ --pem
其中
dns
和ip
指定 Fleet Server 的名称和 IP 地址。对于您计划部署的每个 Fleet Server,运行此命令。此命令创建一个 zip 文件,其中包含
.crt
和.key
文件。解压缩 zip 文件将文件存储在安全的位置。您稍后需要这些文件来加密 Elastic Agent 和 Fleet Server 之间的流量。
加密 Elastic Agent、Fleet Server 和 Elasticsearch 之间的流量
编辑Fleet Server 需要 CA 证书或 CA 指纹才能安全地连接到 Elasticsearch。它还需要公开 Fleet Server 证书,以便其他 Elastic Agent 可以安全地连接到它。
在本节中的步骤中,假设您拥有以下文件
|
用于连接到 Fleet Server 的 CA 证书。这是用于 生成 Fleet Server 的证书和密钥 的 CA。 |
|
您为 Fleet Server 生成的证书。 |
|
您为 Fleet Server 生成的私钥。 如果 |
|
用于连接到 Elasticsearch 的 CA 证书。这是用于为 Elasticsearch 生成证书的 CA(请参阅 先决条件)。 请注意,可以使用 CA 证书的 SHA-256 指纹(哈希值)代替 |
要加密 Elastic Agent、Fleet Server 和 Elasticsearch 之间的流量
- 配置 Fleet 设置。这些设置将应用于所有 Fleet 管理的 Elastic Agent。
-
在 Kibana 中,打开主菜单,然后单击 管理 > Fleet > 设置。
-
在 Fleet Server 主机 下,指定 Elastic Agent 用于连接到 Fleet Server 的 URL。例如,https://192.0.2.1:8220,其中 192.0.2.1 是您将在其中安装 Fleet Server 的主机 IP。
对于主机设置,请使用
https
协议。也允许基于 DNS 的名称。 - 在 输出 下,搜索默认输出,然后单击 操作 列中的 编辑 图标。
- 在 主机 字段中,指定 Elastic Agent 将发送数据的 Elasticsearch URL。例如,https://192.0.2.0:9200。
- 指定 CA 证书或 CA 指纹以安全地连接 Elasticsearch
-
- 如果您有来自根 CA 的有效的十六进制编码的 SHA-256 CA 可信指纹,请在 Elasticsearch CA 可信指纹 字段中指定它。要了解更多信息,请参阅 Elasticsearch 安全文档。
-
否则,在 高级 YAML 配置 下,设置
ssl.certificate_authorities
并指定用于连接到 Elasticsearch 的 CA 证书。您可以指定文件路径列表(如果文件可用),或将证书直接嵌入到 YAML 配置中。如果指定文件路径,则证书必须在运行 Elastic Agent 的主机上可用。文件路径示例
粘贴的证书示例
ssl: certificate_authorities: - | -----BEGIN CERTIFICATE----- MIIDSjCCAjKgAwIBAgIVAKlphSqJclcni3P83gVsirxzuDuwMA0GCSqGSIb3DQEB CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu ZXJhdGVkIENBMB4XDTIxMDYxNzAxMzIyOVoXDTI0MDYxNjAxMzIyOVowNDEyMDAG A1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5lcmF0ZWQgQ0Ew ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDOFgtVri7Msy2iR33nLrVO /M/6IyF72kFXup1E67TzetI22avOxNlq+HZTpZoWGV1I4RgxiQeN12FLuxxhd9nm rxfZEqpuIjvo6fvU9ifC03WjXg1opgdEb6JqH93RHKw0PYimxhQfFcwrKxFseHUx DeUNQgHkMQhDZgIfNgr9H/1X6qSU4h4LemyobKY3HDKY6pGsuBzsF4iOCtIitE9p sagiWR21l1gW/lNaEW2ICKhJXbaqbE/pis45/yyPI4Q1Jd1VqZv744ejnZJnpAx9 mYSE5RqssMeV6Wlmu1xWljOPeerOVIKUfHY38y8GZwk7TNYAMajratG2dj+v9eAV AgMBAAGjUzBRMB0GA1UdDgQWBBSCNCjkb66eVsIaa+AouwUsxU4b6zAfBgNVHSME GDAWgBSCNCjkb66eVsIaa+AouwUsxU4b6zAPBgNVHRMBAf8EBTADAQH/MA0GCSqG SIb3DQEBCwUAA4IBAQBVSbRObxPwYFk0nqF+THQDG/JfpAP/R6g+tagFIBkATLTu zeZ6oJggWNSfgcBviTpXc6i1AT3V3iqzq9KZ5rfm9ckeJmjBd9gAcyqaeF/YpWEb ZAtbxfgPLI3jK+Sn8S9fI/4djEUl6F/kARpq5ljYHt9BKlBDyL2sHymQcrDC3pTZ hEOM4cDbyKHgt/rjcNhPRn/q8g3dDhBdzjlNzaCNH/kmqWpot9AwmhhfPTcf1VRc gxdg0CTQvQvuceEvIYYYVGh/cIsIhV2AyiNBzV5jJw5ztQoVyWvdqn3B1YpMP8oK +nadUcactH4gbsX+oXRULNC7Cdd9bp2G7sQc+aZm -----END CERTIFICATE-----
-
将 Elastic Agent 作为 Fleet Server 安装在主机上并将其配置为使用 TLS
-
如果您还没有 Fleet Server 服务令牌,请单击 Fleet 中的 代理 选项卡,并按照说明立即生成服务令牌。
产品内安装步骤不完整。在运行
install
命令之前,请添加下一步中显示的设置。 -
从您解压缩 Fleet Server 的目录中,运行
install
命令并指定要使用的证书。以下命令将 Elastic Agent 作为服务安装,将其注册到 Fleet Server 策略中,并启动服务。
如果您使用的是 DEB 或 RPM,或者 Elastic Agent 已经安装,请使用
enroll
命令以及以下选项,然后按照 启动 Elastic Agent 中的说明启动服务。sudo ./elastic-agent install \ --url=https://192.0.2.1:8220 \ --fleet-server-es=https://192.0.2.0:9200 \ --fleet-server-service-token=AAEBAWVsYXm0aWMvZmxlZXQtc2XydmVyL3Rva2VuLTE2MjM4OTAztDU1OTQ6dllfVW1mYnFTVjJwTC2ZQ0EtVnVZQQ \ --fleet-server-policy=fleet-server-policy \ --fleet-server-es-ca=/path/to/elasticsearch-ca.crt \ --certificate-authorities=/path/to/ca.crt \ --fleet-server-cert=/path/to/fleet-server.crt \ --fleet-server-cert-key=/path/to/fleet-server.key \ --fleet-server-port=8220 \ --elastic-agent-cert=/tmp/fleet-server.crt \ --elastic-agent-cert-key=/tmp/fleet-server.key \ --elastic-agent-cert-key-passphrase=/tmp/fleet-server/passphrase-file \ --fleet-server-es-cert=/tmp/fleet-server.crt \ --fleet-server-es-cert-key=/tmp/fleet-server.key \ --fleet-server-client-auth=required
其中
-
url
- Fleet Server URL。
-
fleet-server-es
- Elasticsearch URL
-
fleet-server-service-token
- 用于与 Elasticsearch 通信的服务令牌。
-
fleet-server-policy
- Fleet Server 将使用的特定策略。
-
fleet-server-es-ca
- 当前 Fleet Server 用于连接到 Elasticsearch 的 CA 证书。
-
certificate-authorities
- 应信任的其他 Elastic Agent 用于连接到此 Fleet Server 的 PEM 编码的 CA 证书文件的路径列表
-
fleet-server-cert
- PEM 编码证书(或证书链)的路径,该证书与 fleet-server-cert-key 关联,用于将此 Fleet Server HTTPS 端点公开给其他 Elastic Agent
-
fleet-server-cert-key
- 用于将此 Fleet Server HTTPS 端点公开给其他 Elastic Agent 的私钥
-
elastic-agent-cert
- 用作 Elastic Agent 连接到 Fleet Server 的客户端证书的证书。
-
elastic-agent-cert-key
- 用作 Elastic Agent 连接到 Fleet Server 的私钥的路径。
-
elastic-agent-cert-key
- 包含 Elastic Agent 将用于连接到 Fleet Server 的互信 TLS 私钥密码的文件的路径。该文件只能包含密码字符,不能包含换行符或其他非打印字符。仅当
elastic-agent-cert-key
已加密并需要密码才能使用时,才会使用此选项。 -
fleet-server-es-cert
- Fleet Server 连接到 Elasticsearch 时将使用的客户端证书的路径。
-
fleet-server-es-cert-key
- Fleet Server 连接到 Elasticsearch 时将使用的私钥的路径。
-
fleet-server-client-auth
none
、optional
或required
之一。默认为none
。Fleet Server 的 client_authentication 选项,用于客户端 mTLS 连接。如果指定了optional
或required
,则客户端证书将使用--certificate-authorities
标志中指定的 CA 进行验证。
请注意,还可以使用以下方法指定私钥的可选密码
-
fleet-server-cert-key-passphrase
- 用于解密 Fleet Server 私钥的密码文件。
-
-
-
安装 Elastic Agent 并将其注册到 Fleet 中。
连接到安全 Fleet Server 的 Elastic Agent 需要传入 Fleet Server 使用的 CA 证书。Elasticsearch 使用的 CA 证书已在代理策略中指定,因为它是通过 Kibana 中的 Fleet 设置进行设置的。您无需在命令行中传递它。
以下命令将 Elastic Agent 作为服务安装,将其注册到与指定令牌关联的代理策略中,并启动服务。
sudo elastic-agent install --url=https://192.0.2.1:8220 \ --enrollment-token=<string> \ --certificate-authorities=/path/to/ca.crt
其中
-
url
- 用于将 Elastic Agent 注册到 Fleet 的 Fleet Server URL。
-
注册令牌
- 将应用于 Elastic Agent 的策略的注册令牌。
-
certificate-authorities
- 用于连接到 Fleet Server 的 CA 证书。这是用于 为 Fleet Server 生成证书和密钥 的 CA。
没有注册令牌?在 Fleet 中的 代理 选项卡上,单击 添加代理。在 注册并启动 Elastic Agent 下,按照产品中的安装步骤操作,确保在运行命令之前添加了
--certificate-authorities
选项。 -
-