这是一个相当新的 ELK 安装。我最初安装 v7.x 是因为我误以为它是必需的;但后来通过编辑 Elastic PPA 的源 URL 进行了升级。使用 apt 进行升级没有错误。
我必须调整 elasticsearch.yml 文件中的某些设置(将“http”替换为“transport”):
ELK7:
xpack.security.http.ssl.enabled: 'true'
xpack.security.http.ssl.verification_mode: 'none'
xpack.security.http.ssl.certificate_authorities: /etc/elasticsearch/certs/ca/ca.crt
xpack.security.http.ssl.key: /etc/elasticsearch/certs/netflow/netflow.key
xpack.security.http.ssl.certificate: /etc/elasticsearch/certs/netflow/netflow.crt
麋鹿8:
xpack.security.transport.ssl.enabled: 'true'
xpack.security.transport.ssl.verification_mode: 'none'
xpack.security.transport.ssl.certificate_authorities: /etc/elasticsearch/certs/ca/ca.crt
xpack.security.transport.ssl.key: /etc/elasticsearch/certs/netflow/netflow.key
xpack.security.transport.ssl.certificate: /etc/elasticsearch/certs/netflow/netflow.crt
在 ELK 7 下,一切运行正常。在 ELK 8 下,它现在会从链接到 curl 的 OpenSSL 库中产生错误:
# curl -v --cacert /etc/elasticsearch/certs/ca/ca.crt -u elastic:PASSWORD https://127.0.0.1:9200
* Trying 127.0.0.1:9200...
* Connected to 127.0.0.1 (127.0.0.1) port 9200 (#0)
* ALPN: offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* CAfile: /etc/elasticsearch/certs/ca/ca.crt
* CApath: /etc/ssl/certs
* OpenSSL/3.0.13: error:0A00010B:SSL routines::wrong version number
* Closing connection 0
curl: (35) OpenSSL/3.0.13: error:0A00010B:SSL routines::wrong version number
[Exit 35 ]
我要问的第一个问题是,这个错误到底是什么意思?哪个版本错误?(我猜是 SSL 版本)
我尝试添加--ssl2、--ssl3、--tls-max 1.0、--tls-max 1.1、--tls-max 1.2 和--tls-max 1.3;但没有什么区别。
所以 Steffen 是对的。根本没有 SSL。从 7.x 升级到 8.x 后,elasticsearch 无法启动,我在日志中发现以下错误消息:
当您点击链接时(还有第二个链接要追踪:为 Elastic Stack 设置基本安全性),您会发现在配置中使用“transport”而不是“http”的说明(如我上面所做的那样)。不确定这实际上有什么作用,但它会在与 Elasticsearch 的默认端口 9200 连接上禁用 SSL。
对于我来说,针对“必须启用传输 SSL”错误的正确解决方案是恢复“http”而不是“传输”,并添加以下行: