Filebeat 无法连接到 Logstash,因为证书不包含任何 IP SAN
Filebeat cannot connect to Logstash because certificate does not contain any IP SANs
我已经为 Filebeat(v6.1.0,ELK 5.6.4)生成了 SSL 证书,并将它们部署到客户端,并将 Filebeat 配置为使用 filebeat.yml
中的 ssl.certificate_authorities
。但是,即使我在 SSL 配置中的 [ v3_ca ]
中指定了 subjectAlternateName
,filebeat 也无法验证 SSL 证书。
生成密钥:
$ sudo openssl req -config cert.cnf -x509 -batch -nodes -newkey rsa -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
cert.cnf
[ req ]
prompt = no
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
countryName = BL
stateOrProvinceName = blah
localityName = blah
commonName = xxx.xxx.xxx.xxx
[ v3_ca ]
subjectAltName = IP:xxx.xxx.xxx.xxx
为什么我仍然收到以下错误?
ERR Failed to connect: x509: cannot validate certificate for xxx.xxx.xxx.xxx because it doesn't contain any IP SANs
如果您添加了具有正确 IP 地址的 subjectAltName
但您仍然看到此错误,请验证证书是否确实从配置文件中获取此 属性。
验证密钥:
$ openssl x509 -in certs/logstash-forwarder.crt -text -noout
寻找一个部分
X509v3 Subject Alternative Name:
IP Address:xxx.xxx.xxx.xxx
如果缺少该部分,则由于某种原因没有为您的密钥生成 subjectAlternateName
。在这种情况下,尽管所有文档都说将 subjectAlternateName
放在 [ v3_ca ]
部分下,除非指定(如果您使用默认的 /etc/ssl/openssl.cnf
this 可能不是问题)。对于 CA:在 certs.cnf
中确保 [ req ]
部分将 x509_extensions
指向 v3_ca
。对于 CSR:在 certs.cnf
中确保 [ req ]
部分将 req_extensions
指向 v3_ca
。
cert.cnf
[ req ]
prompt = no
distinguished_name = req_distinguished_name
req_extensions = v3_ca # <----------- This one, if generating a CSR
x509_extensions = v3_ca # <---------- This one, if generating a CA
[ req_distinguished_name ]
countryName = BL
stateOrProvinceName = blah
localityName = blah
commonName = xxx.xxx.xxx.xxx
[ v3_ca ]
subjectAltName = IP:xxx.xxx.xxx.xxx
重新生成密钥,验证,你应该在输出中看到以下部分:
X509v3 extensions:
X509v3 Subject Alternative Name:
IP Address:xxx.xxx.xxx.xxx
部署并享受。
我已经为 Filebeat(v6.1.0,ELK 5.6.4)生成了 SSL 证书,并将它们部署到客户端,并将 Filebeat 配置为使用 filebeat.yml
中的 ssl.certificate_authorities
。但是,即使我在 SSL 配置中的 [ v3_ca ]
中指定了 subjectAlternateName
,filebeat 也无法验证 SSL 证书。
生成密钥:
$ sudo openssl req -config cert.cnf -x509 -batch -nodes -newkey rsa -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
cert.cnf
[ req ]
prompt = no
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
countryName = BL
stateOrProvinceName = blah
localityName = blah
commonName = xxx.xxx.xxx.xxx
[ v3_ca ]
subjectAltName = IP:xxx.xxx.xxx.xxx
为什么我仍然收到以下错误?
ERR Failed to connect: x509: cannot validate certificate for xxx.xxx.xxx.xxx because it doesn't contain any IP SANs
如果您添加了具有正确 IP 地址的 subjectAltName
但您仍然看到此错误,请验证证书是否确实从配置文件中获取此 属性。
验证密钥:
$ openssl x509 -in certs/logstash-forwarder.crt -text -noout
寻找一个部分
X509v3 Subject Alternative Name:
IP Address:xxx.xxx.xxx.xxx
如果缺少该部分,则由于某种原因没有为您的密钥生成 subjectAlternateName
。在这种情况下,尽管所有文档都说将 subjectAlternateName
放在 [ v3_ca ]
部分下,除非指定(如果您使用默认的 /etc/ssl/openssl.cnf
this 可能不是问题)。对于 CA:在 certs.cnf
中确保 [ req ]
部分将 x509_extensions
指向 v3_ca
。对于 CSR:在 certs.cnf
中确保 [ req ]
部分将 req_extensions
指向 v3_ca
。
cert.cnf
[ req ]
prompt = no
distinguished_name = req_distinguished_name
req_extensions = v3_ca # <----------- This one, if generating a CSR
x509_extensions = v3_ca # <---------- This one, if generating a CA
[ req_distinguished_name ]
countryName = BL
stateOrProvinceName = blah
localityName = blah
commonName = xxx.xxx.xxx.xxx
[ v3_ca ]
subjectAltName = IP:xxx.xxx.xxx.xxx
重新生成密钥,验证,你应该在输出中看到以下部分:
X509v3 extensions:
X509v3 Subject Alternative Name:
IP Address:xxx.xxx.xxx.xxx
部署并享受。