APM 代理 TLS 通信
编辑APM 代理 TLS 通信编辑
默认情况下,TLS 是禁用的。当为 APM 服务器入站通信启用 TLS 时,代理将通过验证其证书来验证 APM 服务器的身份。
启用 TLS 时,需要证书和相应的私钥。证书和私钥可以由受信任的证书颁发机构 (CA) 颁发,也可以是自签名的。
使用自签名证书编辑
步骤 1:创建自签名证书编辑
Elasticsearch 发行版提供了用于创建自签名证书的 certutil
工具
- 创建 CA:
./bin/elasticsearch-certutil ca --pem
。系统将提示您输入包含证书和私钥的输出 zip 存档的所需位置。 - 提取 CA 存档的内容。
- 创建自签名证书:
./bin/elasticsearch-certutil cert --ca-cert <path-to-ca-crt>/ca.crt --ca-key <path-to-ca-key>/ca.key --pem --name localhost
- 从生成的 zip 存档中提取证书和密钥。
步骤 2:配置 APM 服务器编辑
启用 TLS 并将 APM 服务器配置为指向提取的证书和密钥
在 APM 集成设置中启用 TLS,并使用SSL/TLS 输入设置设置服务器证书和密钥的路径。
以下是启用了安全通信的基本 APM 服务器 SSL 配置。这将使 APM 服务器提供 HTTPS 请求而不是 HTTP。
apm-server.ssl.enabled: true apm-server.ssl.certificate: "/path/to/apm-server.crt" apm-server.ssl.key: "/path/to/apm-server.key"
有关完整配置选项列表,请参阅SSL/TLS 输入设置。
如果 APM 代理使用无法通过已知 CA 进行身份验证的证书(例如自签名证书)对自己进行身份验证,请使用 ssl.certificate_authorities
设置自定义 CA。这将自动修改 ssl.client_authentication
配置以要求身份验证。
步骤 3:配置 APM 代理编辑
当 APM 服务器使用未链接到公开受信任证书(例如自签名)的证书时,需要在 APM 代理中进行其他配置
-
Go 代理:通过
ELASTIC_APM_SERVER_CERT
进行证书固定 -
Python 代理:通过
server_cert
进行证书固定 -
Ruby 代理:通过
server_ca_cert
进行证书固定 -
.NET 代理:
ServerCert
-
Node.js 代理:通过
serverCaCertFile
进行自定义 CA 设置 -
Java 代理:将证书添加到 JVM
trustStore
。有关更多详细信息,请参阅APM 服务器身份验证。
我们不建议禁用 APM 代理对服务器证书的验证,但这是可以的
-
Go 代理:
ELASTIC_APM_VERIFY_SERVER_CERT
-
.NET 代理:
VerifyServerCert
-
Java 代理:
verify_server_cert
-
PHP 代理:
verify_server_cert
-
Python 代理:
verify_server_cert
-
Ruby 代理:
verify_server_cert
-
Node.js 代理:
verifyServerCert
客户端证书身份验证编辑
APM 服务器不要求代理提供证书进行身份验证,并且 Elastic 的后端代理中没有专门针对 SSL/TLS 客户端证书身份验证的支持。