AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 633681
Accepted
Sreeraj
Sreeraj
Asked: 2014-10-06 08:54:27 +0800 CST2014-10-06 08:54:27 +0800 CST 2014-10-06 08:54:27 +0800 CST

Logstash-forwarder 抛出 SSL 错误

  • 772

我的同事把这项任务交给了我,这就是背景。

通过使用常规方法在服务器上配置 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 ~]#

提前致谢。

logstash
  • 1 1 个回答
  • 10358 Views

1 个回答

  • Voted
  1. Best Answer
    b13n1u
    2014-10-06T10:11:35+08:002014-10-06T10:11:35+08:00

    如消息中所述,您使用的证书没有任何有效的 IP SAN:

    Failed to tls handshake with x.x.x.x x509: cannot validate certificate for x.x.x.x because 
    it doesn't contain any IP SANs  
    

    如果您使用 IP 地址进行连接,则您的证书必须包含匹配的 IP SAN 才能通过 Go 1.3 及更高版本的验证。这在任何 README 文件或文档中都没有(尚未?)提及,但在项目 github存储库中存在一些问题(#226、#221 )。
    要允许 IP 地址作为服务器名称,SSL 证书必须包含 IP 地址作为subjectAltName字段。

    为了解决这个问题,您可以使用以下过程来创建 SSL 证书和密钥:

    1. 创建一个notsec.cfr包含如下输出的文件(或任何其他名称):

      [req]
      distinguished_name = req_distinguished_name
      x509_extensions = v3_req
      prompt = no
      
      [req_distinguished_name]
      C = TG
      ST = Togo
      L =  Lome
      O = Private company
      CN = *
      
      [v3_req]
      subjectKeyIdentifier = hash
      authorityKeyIdentifier = keyid,issuer
      basicConstraints = CA:TRUE
      subjectAltName = @alt_names
      
      [alt_names]
      DNS.1 = *
      DNS.2 = *.*
      DNS.3 = *.*.*
      DNS.4 = *.*.*.*
      DNS.5 = *.*.*.*.*
      DNS.6 = *.*.*.*.*.*
      DNS.7 = *.*.*.*.*.*.*
      IP.1 = 192.168.1.1
      IP.2 = 192.168.69.14  
      

    如果您通过主机名连接,则可以删除 IP SAN,否则添加您的 logstash 服务器 IP 地址。

    1. 使用以下命令创建证书和密钥(使用第 1 点中的文件):

      openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout notsecure.key -out notsecure.crt -config notsec.cnf -days 1825
      

    这将创建一种通配符证书,接受任何主机名和该文件中提到的 IP 地址。当然,这只是一个简单的示例,您需要根据需要调整设置。

    • 5

相关问题

  • 修复 graylog2 网络界面上的严重性

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve