簡體   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