APM 代理 TLS 通信
Elastic Stack
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 客户端证书身份验证。