我在用Logstash,它在我运行的大多数机器上都能正常工作。但在某些机器上,我收到此错误:
Failed to tls handshake with x.x.x.x x509: certificate is valid for , not dns_name
我在某人的博客上看到,他们是这样修复它的:
结果是我自己生成的证书;-PI 使用正确填写的 openssl.cnf 和通配符域创建了一个新的证书。
但是他们没有提供他们用于执行上述操作的步骤。有人能告诉我如何创建带有通配符域的自签名证书吗?以及正确填写openssl.cnf
.
答案1
如果你通过主机名(而不是 IP 地址)设置连接,那么从阅读在此处讨论此问题问题是 Logstash 现在需要主机的 SSL 证书来设置 CN(通用名称)以及生成 SSL没有旗帜-batch
到位:
找出问题所在 - 看起来您现在需要以不同的方式生成 SSL 证书。它必须包含“通用名称”(即您的服务器主机名)。就我而言,我
-batch
在生成证书时删除了标志,导致 openssl 向我询问主机名。
在任何安装了 OpenSSL 的机器的命令行中,该命令将是这样的:
openssl req -x509 -nodes -newkey rsa:2048 -keyout logstash-forwarder.key -out logstash-forwarder.crt
如果需要,可以将和更改为与您的主机名匹配。运行该命令时,您将看到类似以下内容logstash-forwarder.key
:logstash-forwarder.crt
Generating a 2048 bit RSA private key
.............................................+++
..........+++
unable to write 'random state'
writing new private key to 'logstash-forwarder.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:Brooklyn
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Some Company
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:my_hostname.local
Email Address []:
我在这个例子中输入的内容如下;最重要的项目是“通用名称”(CN)
- 国家的名字:我们
- 州或省名称:纽约
- 地点名称:布鲁克林
- 机构名称:一些公司
- 组织单位名称:[我故意将此处留空。]
- 通用名称:我的主机名.local
- 电子邮件地址:[我故意将此处留空。]
我个人喜欢输入国家名称、州和地区名称,因为这有助于我理清这些内容,但这些实际上只是锦上添花。“蛋糕”本身就是主机名:my_hostname.local
。
现在,该解决方案适用于通过主机名建立的连接。如果出现问题的机器没有主机名,则应设置一个。或者,也许应该在/etc/hosts
连接机器的文件中设置主机名,以至少“欺骗”设置使用主机名。
这个问题报告上的一个用户发布了一个很好的脚本来创建一个用于 IP 地址使用的自签名证书,它是位于此处,但应该也有一种方法可以直接从命令行处理该问题。查看此站点似乎问题在于如何SubjectAltName
在使用 OpenSSL 时配置 SSL 请求。