簡體   English   中英

SSL 錯誤(錯誤握手),證書有效 | Elasticsearch & Python

[英]SSL Error (bad handshake) with valid certificate | Elasticsearch & Python

我通過 Python 腳本將數據傳遞給 Elasticsearch (ES)。 首先,我用自簽名證書保護了 ES,一切都按預期工作。 然后,我切換到更受信任的證書(Let's Encrypt)。 請注意,我可以毫無問題地訪問我的 ES 集群。 Let's Encrypt 證書被我的瀏覽器信任 + 被與 ES 對話的應用程序信任,沒問題。 但是,當我嘗試使用新證書將數據從 Python 腳本傳遞到 ES 時,出現以下錯誤:

urllib3.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",)

我本以為自簽名證書會出現此錯誤,但 Let's encrypt 不會出現此錯誤。 我可以避免它的唯一方法是將設置更改為verify=False ,這不是長期解決方案。

在收到上述錯誤消息之前,我收到以下錯誤: elasticsearch.exceptions.SSLError: ConnectionError([SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)) caused by: SSLError([SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777))

我通過執行pip install requests找到了解決方法。 但是,之后我收到了我提到的第一個錯誤(握手錯誤)。 我知道這意味着證書不受信任。 但是,如果它適用於自簽名證書而不適用於瀏覽器和應用程序信任的 Let's Encrypt 證書,這怎么可能呢? 例如,如果我在https://my-IP:9200上調用 ES,我的瀏覽器不會發出警告,而自簽名證書會發出警告。

一些附加信息

  • 蟒蛇3
  • urllib3 1.25.7
  • 證書 2019.9.11
  • Ubuntu 18.04

所以,基本上一切都是最新的。 我還通過降級 certifi 和/或 urllib3 嘗試了建議的解決方案,但它不起作用。 一個建議是將 urllib3 降級到版本 1.25 以下(但正如我所說,它在我的情況下不起作用)。

有任何想法嗎?

您需要先安裝證書,然后將其與ElasticsearchPython一起使用

host = 'mydomain.com:9200'

client = Elasticsearch(host, http_auth=('admin', 'pass'), scheme="https", use_ssl=True, ca_certs='C:/my_path/CertificateFile.cer.pem', port=443)


try:
    info = json.dumps(client.info(), indent=4)
    print ("Elasticsearch client info():", info)

except exceptions.ConnectionError as err:
    print ("\nElasticsearch info() ERROR:", err)
    print ("\nThe client host:", host, "is invalid or cluster is not running")
    client = None

回復:

> Elasticsearch client info(): {
>     "name": "my_name",
>     "cluster_name": "my_cluster_name",
>     "cluster_uuid": "fBRShbkSRy2vcfQJZsojGA",
>     "version": {
>         "number": "7.3.0",
>         "build_flavor": "default",
>         "build_type": "tar",
>         "build_hash": "de777fa",
>         "build_date": "2019-07-24T18:30:11.767338Z",
>         "build_snapshot": false,
>         "lucene_version": "8.1.0",
>         "minimum_wire_compatibility_version": "6.8.0",
>         "minimum_index_compatibility_version": "6.0.0-beta1"
>     },
>     "tagline": "You Know, for Search" }

elasticsearch.yml:

xpack.security.enabled: true
xpack.ml.enabled: false
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: elastic-certificates.p12
xpack.security.http.ssl.truststore.path: elastic-certificates.p12

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM