设置 verify_certs=False 但elasticsearch.Elasticsearch 会因证书验证失败而引发 SSL 错误

son*_*ava 4 python ssl elasticsearch

self.host="KibanaProxy"

self.Port="443"

self.user="测试"

self.password="测试"

我需要取消证书验证。-k在命令行上使用选项时,它适用于 curl 。但是在使用 Elasticsearch python 模块中的 elasticsearch.Elasticsearch 进行连接时,它会引发错误。

_es2 = Elasticsearch([self.host], port=self.port, scheme="https", http_auth=(self.user, self.password), use_ssl=True, verify_certs=False)

_es2.info()

错误:

    raise SSLError('N/A', str(e), e)
elasticsearch.exceptions.SSLError: ConnectionError([SSL: CERTIFICATE_VERIFY_FAILED] 
certificate verify failed (_ssl.c:590)) caused by: SSLError([SSL: 
CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590))```
Run Code Online (Sandbox Code Playgroud)

son*_*ava 11

找到了。在阅读这篇文章https://github.com/elastic/elasticsearch-py/issues/275 时,我了解了 connection_class。寻找与它相关的一些标准或预定义的方法,所以找到了https://elasticsearch-py.readthedocs.io/en/master/transports.html

解决方案:

from elasticsearch import RequestsHttpConnection

.....

_es2 = Elasticsearch([self.host], port=self.port, connection_class=RequestsHttpConnection, http_auth=(self.user, self.password), use_ssl=True, verify_certs=False)

print(es.ping())

$ ./sn.py

真的

  • 哇谢谢你。此外,您*需要*手动安装“requests”模块才能使用RequestsHttpConnection。它们没有捆绑在一起。 (2认同)