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 客户端证书身份验证的专用支持。