转载自:
https://blog.csdn.net/UbuntuTouch/article/details/105527468
APM Agents 访问APM server如果不做安全的设置,那么任何一个应用都有可能把数据传输到APM server中。
如果是恶意的软件,那么我们可能得到的数据是错误的。那么怎么保证我们的安全传输呢?
答案是在传输的时候使用secret token。
Secret token 是什么?
您可以配置一个Secret token来授权对APM服务器的请求。 这样可以确保只有您的Agent才能将数据发送到您的APM服务器。
代理和APM服务器都必须配置相同的Secret toke,并且scecret token仅在与SSL/TLS结合使用时才提供安全性。
要使用Secret token 保护APM代理与APM服务器之间的通信安全:
- 在APM服务器中启用SSL/TLS
- 在Agent和服务器中设置Secret token
- 在APM agent中启用HTTPS
生成证书
在Elasticsearch安装的根目录下打入如下的命令:
1 | ./bin/elasticsearch-certutil ca --pem |
上面的命令将会生成一个名字叫做elastic-stack-ca.zip的文件。我们接着使用如下的命令把上面的文件进行解压:
1 | unzip elastic-stack-ca.zip |
在当前的目录下生成了一个新的目录ca,里面含有两个文件:ca.crt及ca.key。请注意这里的ca.crt证书将在我们一下的agent里将会被用到。 接下来,我们按照如下的命令来生成证书:
1 | ./bin/elasticsearch-certutil cert --ca-cert ./ca/ca.crt --ca-key ./ca/ca.key --pem --name localhost |
在上面的命令中,我们生产一个绑定localhost的证书,也即是说这个证书只能在当前的localhost中进行使用。就像上面显示的那样,它在当前的目录中生产一个叫做certificate-bundle.zip的文件。这文件含有我们所需要的证书信息。我们使用如下的命令来解压缩这个文件:
1 | unzip certificate-bundle.zip |
它在localhost中生成了我们想要的证书文件localhost.crt及localhoset.key。我们把这两个文件拷入到我们的APM 服务器安装的根目录中。
另注:我们可以使用如下的命令把一个.crt的证书转换为一个.pem的证书:
1 | openssl x509 -in mycert.crt -out mycert.pem -outform PEM |
配置APM 服务器
为我们的APM服务器配置SSL/TLS
打开apm-server.yml文件,并把如下的配置加到该文件的最后面:
1 | apm-server.ssl.enabled: true |
通过上面的配置后,我们重新启动我们的APM server:
1 | ./apm-server -e |
测试APM agent
把之前生成的ca.crt证书拷入到该应用的根目录中,然后再引用的配置中新增俩参数
1 | serviceName: 'zipcode service', |