我的同事把这项任务交给了我,这就是背景。
通过使用常规方法在服务器上配置 Logstash 并在所有代理上配置 Logstash-forwarder,他使 ELK(Elasticsearch、Logstash 和 Kibana)堆栈与我们的 RHEL 6.2 服务器一起工作。除了两个 logstash 代理节点外,一切都按预期正常工作。它没有索引来自这两个节点的数据,并且这两个代理节点与环境中的其他代理略有不同。所有代理(正在运行)都在运行带有“OpenSSL 1.0.0-fips”的 RHEL 6.2 机器,而两个麻烦的代理正在运行带有“OpenSSL 0.9.8e-fips-rhel5”的 RHEL 5.5。现在,让我解释一下当我开始研究这两个节点时所面临的问题。
当我们使用 '/etc/init.d/logstash-forwarder restart' 重新启动 logstash 转发器服务时,它会抛出以下错误:
2014/10/01 09:21:23.898917 无法与 10.xxx x509 握手:无法验证 10.xxx 的证书,因为它不包含任何 IP SAN 2014/10/01 09:21:24.900502 连接到 [10 .xxx]:5000 (10.xxx) 2014/10/01 09:21:24.902081 无法与 10.xxx x509 握手:无法验证 10.xxx 的证书,因为它不包含任何 IP SAN 2014/10/ 01 09:21:25.903970 连接到 [10.xxx]:5000 (10.xxx) 2014/10/01 09:21:25.905708 无法与 10.xxx x509 握手:无法验证 10.xxx 的证书,因为它没有'不包含任何 IP SAN
我知道这是因为代理正在尝试使用其 IP 地址通过 SSL 连接到服务器,所以我再次使用 IP SAN 重新创建了证书,然后它开始向我抛出以下错误,不仅是 5.2 机器,而且还有6.2 机器:
2014/10/03 17:09:12.403253 无法与 10.xxx x509 握手:证书由未知机构签名 2014/10/03 17:09:13.404974 连接到 [10.xxx]:5000 (10.xxx) 2014 /10/03 17:09:13.428156 无法与 10.xxx x509 握手:证书由未知机构签名 2014/10/03 17:09:14.429648 连接到 [10.xxx]:5000 (10.xxx) 2014/ 10/03 17:09:14.442006 无法与 10.xxx x509 进行 tls 握手:证书由未知机构签名
我尝试通过将新的logstash证书附加到CA文件来将证书添加到ca-bundle.crt:
'openssl x509 -in certs/logstash-forwarder.crt -text >> certs/ca-bundle.crt'。
我有一种感觉,如果我能够将“IP SAN”证书添加到所有代理节点的受信任证书列表中,我将能够解决整个问题。我的问题是:
还有一件事,Logstash 服务器正在运行 RHEL 6.2。并且所有代理节点(工作和非工作)都安装了相同版本的 logstash-forwarder - logstash-forwarder-0.3.1-1.x86_64.rpm。使这些代理节点接受 IP SAN 证书的正确方法是什么?我是否正确理解问题?RHEL 6.x 和 RHEL 5.x 机器之间是否存在一些不兼容?
我在 /etc/logstash-forwarder 中有以下条目
[root@name2 ~]# cat /etc/logstash-forwarder { "network": { "servers": [ "10.xxx:5000" ], "timeout": 15, "ssl ca": "/etc/pki /tls/certs/logstash-forwarder.crt", "ssl strict verify": "false" }, "files": [ { "paths": [ "/var/log/maillog" ], "fields": { " type": "syslog" } } ] } [root@name2 ~]#
提前致谢。
如消息中所述,您使用的证书没有任何有效的 IP SAN:
如果您使用 IP 地址进行连接,则您的证书必须包含匹配的 IP SAN 才能通过 Go 1.3 及更高版本的验证。这在任何 README 文件或文档中都没有(尚未?)提及,但在项目 github存储库中存在一些问题(#226、#221 )。
要允许 IP 地址作为服务器名称,SSL 证书必须包含 IP 地址作为
subjectAltName
字段。为了解决这个问题,您可以使用以下过程来创建 SSL 证书和密钥:
创建一个
notsec.cfr
包含如下输出的文件(或任何其他名称):如果您通过主机名连接,则可以删除 IP SAN,否则添加您的 logstash 服务器 IP 地址。
使用以下命令创建证书和密钥(使用第 1 点中的文件):
这将创建一种通配符证书,接受任何主机名和该文件中提到的 IP 地址。当然,这只是一个简单的示例,您需要根据需要调整设置。