客户端主机上安装filebeat,持久化log到elasticsearch中存储,过程中遇到问题:
Error dialing x509: certificate signed by unknown authority.
但是internal环境没有。也就是有的客户端机器有,有的机器没有。
原因需要先从https认证过程说起。下图为一次https请求的交互图,看不懂自己去网上查查,解下来要在此图的基础上解释问题。
从图中看到,服务器首先会生成一对非对称加密证书。公钥中会存有颁发机构信息,通过公网传输给客户端。
然后在客户端的“验证合法性这一步”中,客户端会去校验服务器端传过来的公钥,具体过程如下。
在客户端的主机上会有一个list记录着,当前主机可以信任哪些颁发颁发机构。即由这些被信任的机构颁发的证书才允许被当前主机使用(这理如果客户端不是一台主机,而是一个浏览器,是可以设置成“允许访问不信任的服务器”)。
发生标题错误的原因就是客户端主机的list中没有信任服务器证书的颁发机构。
在当前问题中,服务器端是一个elasticsearch服务。ES服务本身可以配置当客户端没有新人证书的机构时的行为。这里可以去ES官网查,不详述。
那么综上,解决问题的办法就是,为客户端主机重新生成一个CA root(记录可信任颁发机构),这个list中添加服务器证书的颁发机构即可。
注意:如果客户端主机的list没有放在默认的路径下,是需要在filebeat中配置ssl的证书路径。
网友评论