[英]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.