繁体   English   中英

Elasticsearch 无法连接 python 客户端,ssl 错误

[英]Elasticsearch cannot connect with python client, ssl error

我在外部服务器上托管独立的弹性搜索。 使用证书和登录密码验证。 我可以使用浏览器或邮递员连接到它。

但是,当我尝试这样做时,使用 python 客户端它不起作用。 我的连接代码:

        self.es = Elasticsearch(
            address,
            ca_certs=cert_path,
            basic_auth=(user, password),
        )

错误信息:

elastic_transport.TlsError: TLS error caused by: TlsError(TLS error caused by: SSLError(hostname '34.116.***.***' doesn't match either of 'localhost', '172.19.0.2', '127.0.0.1', 'bde723133f75'))

请尝试创建一个 ssl_context 对象并在上下文中设置验证模式。

import ssl
from elasticsearch.connection import create_ssl_context

ssl_context = create_ssl_context(<use `cafile`, or `cadata` or `capath` to set your CA or CAs)
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
es = Elasticsearch('localhost', ssl_context=context, timeout=60)

或者你可以试试这个:

from ssl import create_default_context
from elasticsearch import Elasticsearch
es = Elasticsearch(["https://username:password@yourserver:9200"], verify_certs=False)
es.cat.nodes()

选项 2 将发出警告,因为它使用 HTTPS 禁用带有链接 url 的 SSL,但它可以工作。

使用 Luc 的一些帮助回答:就在我尝试这样的事情之前:

from ssl import create_default_context
import ssl
        context = create_default_context(capath=cert_path)
        context.check_hostname = False
        context.verify_mode = ssl.CERT_NONE
        self.es = Elasticsearch(
            address,
            ssl_context=context,
            basic_auth=(user, password),
            verify_certs=False,
        )

我收到一些警告,但除此之外它有效

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM