Elasticsearch 启动访问报错问题
产生的问题与解决方案
环境:Windows 10
ES 版本:8.12.0
现象:
双击 elasticsearch.bat
文件启动后,访问 http://127.0.0.1:9200
地址报了一个错误:
received plaintext http traffic on an https channel, closing connection Netty4HttpChannel ...
上网查询了一下原因,是因为 ES 在 Windows 下开启了安全认证,所以虽然启动成功了,但是请求失败了。
解决方案:
找到 config/
目录下面的 elasticsearch.yml
配置文件,把安全认证开关从原先的 true 都改成 false,实现免密登录访问即可:
# Enable security features
# 这个地方改成 false
xpack.security.enabled: false
xpack.security.enrollment.enabled: true
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
# 这个关于http的安全认证开启也改成false
xpack.security.http.ssl:
enabled: false
keystore.path: certs/http.p12
...
扩展学习 - Xpack安全认证
从刚刚的问题发现 ES 有一个 xpack 这样一个安全认证机制。顺便学习一下这个机制。
因为 ES 一般存储了公司里大量的数据,所以需要一些安全认证机制,Xpack 就是其中一种。
XPack 是 Elastic Stack
的扩展功能,提供安全性、报警、监视、报告、机器学习和其他功能。ES 7.0+ 之后默认情况下 ES 都会安装 Xpack,不用再单独安装。
Xpack 主要配置说明
# 默认为 true,启用节点上 ES 的 xpack 安全功能,相当于总开关
xpack.security.enabled: false
xpack.security.enrollment.enabled: true
# 用于开启 https
xpack.security.http.ssl:
# 是否开启 https
enabled: false
# full:验证所提供的证书是否由受信任的权威机构(CA)签名,并验证服务器的主机名(或IP地址)是否与证书中识别的名称匹配
# certificate:验证所提供的证书是否由受信任的机构(CA)签名,但不执行任何主机名验证
# none:不执行服务器证书的验证
verification_mode: certificate
# 密钥存放的位置
keystore.path: certs/http.p12
# 信任文件存放位置
truststore.path: certs/http.p12
# 集群节点间的加密和相互认证功能,配置内容同 xpack.security.http.ssl
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
# 仅使用当前节点创建新集群
# 其他节点以后仍然可以加入集群
cluster.initial_master_nodes: ["DESKTOP-LENNVGU"]
# 允许任何地方的 HTTP API 连接
# 连接是加密的则需要用户认证
http.host: 0.0.0.0
# 允许其他节点从任何地方加入集群
# 连接是加密和相互认证的
#transport.host: 0.0.0.0
关于 keystroe 和 truststore
-
keystore
一个放 key 的库,key 就是公钥、私钥、数字签名等组成的一个信息。
-
truststore
放信任的证书的一个 store
truststore
和 keystore
的性质是一样的,都是存放 key 的一个仓库,区别在于 truststore
里存放的是只包含公钥的数字证书,代表了可以信任的证书,而 keystore
是包含私钥的。