ELK官方文档:在Kibana加密通讯

介绍

安全套接字层(SSL)和传输层安全性(TLS)为传输中的数据提供加密。虽然这些术语通常可以互换使用,但Kibana仅支持TLS,它取代了旧的SSL协议。

浏览器将流量发送到Kibana,而Kibana将流量发送到Elasticsearch。这些通信通道分别配置为使用TLS。

TLS需要X.509证书来验证通信方并执行传输中数据的加密。每个证书都包含一个公共密钥,并具有一个关联的但独立的私有密钥;这些密钥用于加密操作。Kibana支持PEM或PKCS#12格式的证书和私钥。

加密浏览器和Kibana之间的流量

您无需为这种类型的加密启用Elasticsearch安全功能。

1、获取Kibana的服务器证书和私钥。

当从Web浏览器接收连接时,Kibana将需要使用此“服务器证书”和相应的私钥。

获取服务器证书时,必须正确设置其主题备用名称(SAN),以确保具有主机名验证的现代Web浏览器将信任它。您可以将一个或多个SAN设置为Kibana服务器的标准域名(FQDN),主机名或IP地址。选择SAN时,应该选择将用于连接浏览器中的Kibana的任何属性,这可能是FQDN。

您可以选择使用该elasticsearch-certutil工具生成证书签名请求(CSR)和私钥。例如:

bin/elasticsearch-certutil csr -name kibana-server -dns some-website.com,www.some-website.com

这将产生一个名为的ZIP存档kibana-server.zip。提取该归档文件以获得PEM格式的CSR(kibana-server.csr)和未加密的私钥(kibana-server.key)。在此示例中,CSR具有的公用名(CN)kibana-server,SAN的SAN some-website.com和的另一SAN www.some-website.com。

您将需要使用证书颁发机构(CA)签署CSR以获得服务器证书。该证书的签名将由配置为信任CA的Web浏览器进行验证。

2、配置Kibana以访问服务器证书和私钥。

a、如果您的服务器证书和私钥为PEM格式:

在中指定服务器证书和私钥kibana.yml:

server.ssl.certificate: "/path/to/kibana-server.crt"
server.ssl.key: "/path/to/kibana-server.key"

如果您的私钥已加密,则将解密密码添加到您的Kibana密钥库中:

bin/kibana-keystore add server.ssl.keyPassphrase

b、否则,如果您的服务器证书和私钥包含在PKCS#12文件中:

在中指定您的PKCS#12文件kibana.yml:

server.ssl.keystore.path: "/path/to/kibana-server.p12"

如果您的PKCS#12文件已加密,则将解密密码添加到Kibana密钥库中:

bin/kibana-keystore add server.ssl.keystore.password

如果您的PKCS#12文件没有使用密码保护,则取决于生成方式,您可能需要将其设置 server.ssl.keystore.password为空字符串。

有关证书和密钥设置的更多信息,请参阅Kibana配置设置。
3、配置Kibana以为入站连接启用TLS。

指定在kibana.yml以下位置使用TLS :

server.ssl.enabled: true

4、重新启动Kibana。
进行这些更改之后,您必须始终通过HTTPS访问Kibana。例如,https:// <your_kibana_host> .com。

加密Kibana和Elasticsearch之间的流量编辑

要执行此步骤,您必须启用Elasticsearch安全功能,或者必须具有为Elasticsearch提供HTTPS端点的代理。

1、在Elasticsearch的HTTP层上启用TLS。
2、获取Elasticsearch的证书颁发机构(CA)证书链。

当连接到Elasticsearch时,Kibana需要适当的CA证书链来正确建立信任。

a、如果您遵循Elasticsearch文档来生成节点证书并使用了该 elasticsearch-certutil http命令,请kibana在其输出中检查目录。根据您选择的选项,输出可能包含PEM格式的CA证书链。
b、否则,您可能为每个Elasticsearch节点都有一个PKCS#12文件。您可以从这些文件之一中提取CA证书链。例如:

openssl pkcs12 -in elastic-certificates.p12 -cacerts -nokeys -out elasticsearch-ca.pem

这将生成一个名为PEM格式的文​​件elasticsearch-ca.pem,其中包含PKCS#12文件中的所有CA证书。
3、配置Kibana以信任HTTP层的Elasticsearch CA证书链。

如果您的CA证书链为PEM格式:

在中指定一个或多个CA证书kibana.yml:

elasticsearch.ssl.certificateAuthorities: ["/path/to/elasticsearch-ca.pem"]

b、否则,如果您的CA证书链包含在PKCS#12文件中:

您不应使用包含私钥的PKCS#12文件。这是不必要的安全风险。如果只有一个包含私钥的PKCS#12文件,一种更安全的方法是提取PEM格式的CA证书链。

elasticsearch.ssl.truststore.path: "/path/to/elasticsearch-ca.p12"

在中指定您的PKCS#12文件kibana.yml:

elasticsearch.ssl.truststore.path: "/path/to/elasticsearch-ca.p12"

如果您的PKCS#12文件已加密,则将解密密码添加到Kibana密钥库中:

bin/kibana-keystore add elasticsearch.ssl.truststore.password

如果您的PKCS#12文件没有使用密码保护,则取决于生成方式,您可能需要将其设置 elasticsearch.ssl.truststore.password为空字符串。

有关证书和密钥设置的更多信息,请参阅Kibana配置设置。
4、配置Kibana以为与Elasticsearch的出站连接启用TLS。

在中为Elasticsearch指定HTTPS URL kibana.yml:

elasticsearch.hosts: ["https://<your_elasticsearch_host>.com:9200"]

使用HTTPS协议会导致默认elasticsearch.ssl.verificationMode选项full,该选项利用主机名验证。有关此设置的更多信息,请参阅Kibana配置设置。

如果启用了Elastic监视功能,并且已经设置了单独的Elasticsearch监视集群,则还可以配置Kibana以通过HTTPS连接到监视集群。步骤相同,但每个设置都以开头xpack.monitoring.。例如,xpack.monitoring.elasticsearch.hosts,xpack.monitoring.elasticsearch.ssl.truststore.path等。

参考链接 :
https://www.elastic.co/guide/en/kibana/current/configuring-tls.html#configuring-tls-kib-es

发布了349 篇原创文章 · 获赞 60 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_40907977/article/details/104769507