重新索引时如何在Elasticsearch DevTools中忽略SSL验证
解决Elasticsearch DevTools远程重索引的SSL证书验证问题
很遗憾,Elasticsearch DevTools控制台本身并没有像Python的verify_certs=False或者curl的-k那样直接的参数来跳过SSL证书验证——因为DevTools本质上是直接调用Elasticsearch的API,而SSL验证的逻辑是由Elasticsearch节点的客户端配置控制的。不过你可以通过两种临时方式来实现类似的效果:
方案一:在Reindex请求的Remote参数中直接禁用证书验证
你可以在_reindex请求的remote字段里添加SSL配置,将验证模式设为none,这样就能绕过证书链的检查。示例请求如下:
POST _reindex { "source": { "remote": { "host": "https://你的远程集群地址:9200", "username": "远程集群用户名", "password": "远程集群密码", "ssl": { "verification_mode": "none" } }, "index": "要迁移的源索引名" }, "dest": { "index": "目标索引名" } }
这个设置只会对当前的重索引请求生效,不会影响集群的全局配置。
方案二:临时修改远程集群的全局配置(适合多次重索引操作)
如果你需要多次执行远程重索引,可以通过动态更新集群设置的方式,给已配置的远程集群添加跳过证书验证的规则,无需重启节点:
PUT _cluster/settings { "persistent": { "cluster.remote": { "你的远程集群别名": { "seeds": ["远程集群节点地址:9300"], "ssl": { "verification_mode": "none" } } } } }
配置完成后,你就可以直接使用远程集群别名来执行重索引:
POST _reindex { "source": { "index": "要迁移的源索引名", "remote": { "cluster": "你的远程集群别名" } }, "dest": { "index": "目标索引名" } }
重要提醒
这两种方法都属于临时的 workaround,绝对不建议在生产环境长期使用——禁用SSL证书验证会带来严重的安全风险,可能导致中间人攻击。最终的最优解还是修复SSL证书问题:比如将远程集群的CA证书导入到本地集群的JVM信任存储中,或者确保两个集群使用的证书都来自受信任的CA机构。
内容的提问来源于stack exchange,提问作者Jules Civel
相关产品推荐
相关产品推荐

