APM 代理 TLS 通信
编辑APM 代理 TLS 通信
编辑TLS 默认禁用。当为 APM Server 入站通信启用 TLS 时,代理将通过验证其证书来验证 APM Server 的身份。
启用 TLS 时,需要证书和相应的私钥。证书和私钥可以由受信任的证书颁发机构 (CA) 颁发,也可以是自签名的。
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 归档中提取证书和密钥。
启用 TLS 并配置 APM Server 以指向提取的证书和密钥
在 APM 集成设置中启用 TLS,并使用SSL/TLS 输入设置来设置服务器证书和密钥的路径。
以下是启用安全通信的基本 APM Server SSL 配置。这将使 APM Server 提供 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
配置以要求身份验证。
当 APM 服务器使用未链接到公共信任证书(例如自签名证书)的证书时,需要在 APM 代理中进行其他配置
-
Go 代理:通过
ELASTIC_APM_SERVER_CERT
进行证书固定 -
Python 代理:通过
server_cert
进行证书固定 -
Ruby 代理:通过
server_ca_cert
进行证书固定 -
.NET 代理:
ServerCert
-
Node.js 代理:通过
serverCaCertFile
进行自定义 CA 设置 -
Java 代理:将证书添加到 JVM
trustStore
。有关更多详细信息,请参阅 APM Server 身份验证。
我们不建议禁用 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 Server 不要求代理提供证书进行身份验证,并且 Elastic 的后端代理中没有对 SSL/TLS 客户端证书身份验证的专门支持。