如何解决elasticsearch-setup-passwords适配自签名证书报错问题
错误原因
SSL connection to https://10.0.2.26:9200/_security/_authenticate?pretty failed: No subject alternative names matching IP address 10.0.2.26 found
Please check the elasticsearch SSL settings under xpack.security.http.ssl.
该报错是因为你启用了Xpack安全的HTTP层SSL配置,当前使用的自签名证书的**主题备用名称(SAN)**字段未包含访问时使用的节点IP 10.0.2.26,导致客户端证书校验不通过。
解决方案
合规修复方案(无需关闭证书校验,适配生产环境)
- 方案1:重新生成含对应SAN的自签名证书
使用Elasticsearch自带的elasticsearch-certutil工具生成证书时,把所有会用到的访问地址(节点IP、集群内部Service域名、外部访问域名等)都加入SAN字段,示例生成命令:
生成后替换K8S中挂载ES证书的Secret,重启ES集群后再执行密码设置命令即可。bin/elasticsearch-certutil cert --name es-node --ip 10.0.2.26 --dns elasticsearch-headless.default.svc.cluster.local --pem - 方案2:使用证书已支持的域名访问
默认部署生成的自签名证书一般会预配置集群内部的Service域名,执行密码设置命令时指定内部域名地址即可绕过IP校验问题:bin/elasticsearch-setup-passwords interactive -u "https://<ES服务名称>.<命名空间>.svc.cluster.local:9200"
临时跳过证书校验方案(仅测试环境使用,不推荐生产环境操作)
- 方案1:使用命令自带的跳过校验参数
Elasticsearch 7.x版本的elasticsearch-setup-passwords命令支持--insecure参数直接跳过证书校验,执行命令改为:bin/elasticsearch-setup-passwords interactive --insecure - 方案2:临时关闭HTTP层SSL
修改ES配置文件elasticsearch.yml,临时关闭HTTP SSL配置:
如果你是通过K8S部署,需要修改对应StatefulSet关联的ConfigMap/Secret中存储的配置,重启ES集群生效后执行密码设置命令,操作完成后再将配置改回xpack.security.http.ssl.enabled: falsetrue重启即可。
内容的提问来源于stack exchange,提问作者Joey Yi Zhao
相关产品推荐
相关产品推荐

