为自管 Fleet Server 配置 SSL/TLS
编辑为自管 Fleet Server 配置 SSL/TLS编辑
如果您运行的是自管集群,请配置传输层安全 (TLS) 以加密 Elastic Agent、Fleet Server 和 Elastic Stack 中其他组件之间的流量。
我们在 Elastic Cloud 上的托管 Elasticsearch Service 默认提供安全、加密的连接!
先决条件编辑
为 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
当前不支持密钥密码。
为 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 运行此命令。此命令创建一个包含
.crt
和.key
文件的 zip 文件。解压 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 \ --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
- PEM 编码的 CA 证书文件路径列表,其他 Elastic Agent 应信任这些文件才能连接到此 Fleet Server
-
fleet-server-cert
- 与 fleet-server-cert-key 关联的 PEM 编码证书(或证书链)的路径,用于将此 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 连接的私钥的路径。
-
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 用于客户端 mTLS 连接的 client_authentication 选项。如果指定了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。
-
enrollment-token
- 将应用于 Elastic Agent 的策略的注册令牌。
-
certificate-authorities
- 用于连接到 Fleet Server 的 CA 证书。这是用于为 Fleet Server 生成证书和密钥的 CA。
没有注册令牌?在 Fleet 的代理选项卡上,单击添加代理。在注册并启动 Elastic Agent下,按照产品内安装步骤操作,确保在运行命令之前添加了
--certificate-authorities
选项。 -
-