ssl - Kibana 未与 elasticsearch shield SSL 连接

标签 ssl elasticsearch ssl-certificate kibana-4

我们正在尝试在本地机器上设置屏蔽 SSL。

Elasticsearch version : 2.2.1
Kibana version : 4.4.1
Shield version : Latest version

我们生成的自签名crt、key、pem文件如下:

openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt
openssl req -out CSR.csr -key privateKey.key -new
openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key
openssl x509 -in certificate.crt -out certificate.pem
keytool -importcert -keystore node01.jks -file certificate.pem -alias my_ca
keytool -certreq -alias node01 -keystore node01.jks -file CSR.csr -keyalg rsa -ext san=dns:XXX.com,ip:XXXX.xxxx.xxx
keytool -importcert -keystore node01.jks -file Certificate-signed.crt -alias node01
openssl x509 -in Certificate-signed.crt -out node01-signed-noheaders.crt

并添加到屏蔽配置中。

防护罩配置:

shield.http.ssl: true
shield.transport.ssl: true
shield.ssl.keystore.key_password: XXXXX
shield.ssl.keystore.password: XXXX
shield.ssl.keystore.path: /es/config/shield/node01.jks
network.host: XX.XX.XX.XX

Kibana 配置:

elasticsearch.url: "https://XXXXX:9200"
elasticsearch.username: "username"
elasticsearch.password: "password"
elasticsearch.ssl.cert: /XXX/XXX/XXX/elasticsearchtls.crt
elasticsearch.ssl.key: /XXX/XXX/XXX/elasticsearchtls.key
elasticsearch.ssl.ca: /XXX/XXX/XXX/elasticsearch.pem
elasticsearch.ssl.verify: true

因此,当运行 kibana 时,elasticsearch 日志中会显示以下错误:

log [12:24:25.512] [error][elasticsearch] Request error, retrying -- self signed certificate
log [12:24:25.622] [warning][elasticsearch] Unable to revive connection: https://XXXX:9200/
log [12:24:25.624] [warning][elasticsearch] No living connections
log [12:24:25.627] [error][status][plugin:elasticsearch] Status changed from yellow to red - Unable to connect to Elasticsearch at https://XXXXXX:9200.

之后,当我更改 elasticsearch.ssl.verify: false 时,Kibana 工作正常,但在 elasticsearch 日志中显示一些错误:

ElasticsearchSecurityException[missing authentication token for REST request [/_mget?timeout=0&ignore_unavailable=true&preference=1461307913497]]

在弹性客户端中也出现了同样的问题。当我们使用 rejectUnauthorized: true 时,客户端不会连接到 elasticsearch。

我的问题是:

  • 自签名证书是否在 Elasticsearch、Kibana 中工作?
  • 我们必须购买商业 CA 证书吗?
  • 我们是否遗漏了什么?

最佳答案

您在生成和导入 key 时使用了不必要的步骤。此外,您生成的证书未由 CA 签名,因此永远不会被信任

除非您有大型部署,否则我只会使用自签名证书,而不是由自签名 CA 签名的证书。

1) 生成带有 SAN 扩展的自签名证书,如此处所示 How can I generate a self-signed certificate with SubjectAltName using OpenSSL?

2) 合并 PKCS12 容器中的 key 和证书,并将其导入到 java keystore 中,如此处所述 importing an existing x509 certificate and private key in Java keystore to use in ssl

关于ssl - Kibana 未与 elasticsearch shield SSL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36793033/

相关文章:

apache - 将 http 重定向到 https,将 www 重定向到非 www

Java 客户端 SSL 重新协商

php - Cakephp 3 - 通过 SSL 的 MySQL 连接

elasticsearch - 使用Elasticsearch进行高级查询(如何加入)

elasticsearch - 如何在脚本分数中使用字段的最大分数 - ElasticSearch

django - refresh()得到了意外的关键字参数 'index'

java - 访问部署在 WebSphere Liberty 集群上的应用程序时出现证书问题

python - 使用Python检测SSL哈希算法

c# - 如何使用 C# 或 VB 读取 SSL 证书的序列号?

tomcat - 如何为连接到 IIS 的 Tomcat 中托管的 Web 应用程序启用证书身份验证