当前位置: 首页 > 知识库问答 >
问题:

ElasticSearch.Exceptions.SSLERROR:ConnectionError主机名不匹配

叶煌
2023-03-14

在处理上述异常的过程中,发生了另一个异常:

跟踪(最近的调用为last):文件“/home/esadm/env/lib/python3.7/site-packages/ellasticsearch/connection/http_urllib3.py”,第233行,在perform_request方法中,url,body,retries=retry(False),headers=request_headers,**kw文件“/home/esadm/env/lib/python3.7/site-packages/urllib3/connectionpool.py”,第720行,在urlopen方法中,url,error=e,在3.7/site-packages/urllib3/util/retry.py“中,第376行,在增量引发6.reraise(type(error),error,_stacktrace)文件”/home/esadm/env/lib/python3.7/site-packages/urllib3/packages/six.py“中,第734行,在reraise引发value.with_traceback(tb)文件”/home/esadm/env/lib/python3.7/site-packages/urllib3/connectionpool.py“中,第672行,在urlopen es/urllib3/connectionpool.py”,第376行,在_make_request self._validate_conn(conn)文件“/home/esadm/env/lib/python3.7/site-packages/urllib3/connectionpool.py”中,第994行在_validate_conn conn.connect()文件“/home/esadm/env/lib/python3.7/site-packages/urllib3/connection.py”中,第386行;在connect_match_hostname(cert,self.assert_hostname或server_hostname)文件“/home/esadm/env/lib/python3.7/ssl.py”中,第396行;在_match_hostname中,第338行name%(主机名,DNSNames[0]))urllib3.exceptions.sslerror:(“主机名'x.x.x.x'与'x.x.x.x'不匹配”,)

我不明白的是,这条信息没有任何意义:

“主机名'x.x.x.x.x'与'x.x.x.x'不匹配”

因为两个Adress匹配,他们是一模一样的!

我遵循了文档,实例Elasticsearch的配置如下所示:

Elasticsearch([get_ip_address()],
               http_auth=('elastic', 'pass'),
               use_ssl=True,
               verify_certs=True,
               port=get_instance_port(),
               ca_certs='ca.crt',
               client_cert='pvln0047.crt',
               client_key='pvln0047.key'
               )

共有1个答案

卫沈义
2023-03-14

问题解决了,问题出在构造函数上:

Elasticsearch([get_ip_address()],
               http_auth=('elastic', 'pass'),
               use_ssl=True,
               verify_certs=True,
               port=get_instance_port(),
               ca_certs='ca.crt',
               client_cert='pvln0047.crt',
               client_key='pvln0047.key'
               )

我没有提到我需要提到DNS名称的ip地址,而是使用context object更改了参数,只是为了跟随原始文档。

context = create_default_context(cafile="ca.crt")
context.load_cert_chain(certfile="pvln0047.crt", keyfile="pvln0047.key")
context.verify_mode = CERT_REQUIRED
Elasticsearch(['dns_name'],
               http_auth=('elastic', 'pass'),
               scheme="https",
               port=get_instance_port(),
               ssl_context=context
               )

这是我生成证书的方式:

bin/elasticsearch-certutil cert ca --pem --in /tmp/instance.yml --out /home/user/certs.zip
instances:
  - name: 'dns_name'
    dns: [ 'dns_name' ]
 类似资料:
  • 问题内容: 我尝试使用自签名证书连接到服务器。我使用此代码接受所有证书。 但是尽管如此,我收到以下错误: 我确定我的证书代码已执行,那么可能是什么问题? 问题答案: 您可以使用

  • 我试图从java调用Heroku的开发人员api,但是我得到了以下异常: 我的代码如下所示: https://stackoverflow.com/a/7266768 https://stackoverflow.com/a/3904473 https://stackoverflow.com/a/25356821 建议我应该重写证书主机名检查,这肯定违背了这一点(当然生产还没有准备好)?

  • 问题内容: 我一直在使用以下代码连接到Google的服务之一。这段代码在我的本地机器上运行良好: 我将这段代码放到了已阻止Google.com的生产环境中。根据要求,他们允许我访问IP:74.125.236.52,这是Google的IP之一,从而允许与Google服务器通信。我编辑了主机文件,也添加了该条目。 仍然无法访问URL,我想知道为什么。所以我将上面的代码替换为: 现在我得到这样的错误:

  • 问题内容: 我正在尝试使用带有自签名证书的Node.js 0.8.8创建TLS服务器/客户端设置。 基本的服务器代码如下所示 现在,当我尝试连接到该服务器时,我使用以下代码: 如果我删除线 从客户端代码,Node.js抛出一个错误告诉我。据我了解,这是由于它是一个自签名证书,并且没有其他方信任此证书。 如果我删除 同样,错误也消失了-但等于错误,实际上意味着我的连接未加密。无论如何,使用我可以访问

  • 我有一个httpsendpoint,我需要从wso2 API管理器访问它。(使用1.10)。我已经将证书文件添加到“client-truststore.jks”文件中。但现在它给出了如下错误。 我已经更新了Axis2.xml文件,如下所示。 如何使用WSO2 APIManager解决此问题以访问此https后端服务

  • 问题内容: 我在Android上使用HttpClient连接到https://someUrl.com/somePath。问题在于该站点的证书用于* .someUrl.com,而不是someUrl.com,因此我得到了SSLException。是的,网站上有些脚,是的,但是除非我能解决问题,否则我将陷入困境。有没有办法让HttpClient放松并接受证书? 问题答案: 这是我的(编辑)解决方案: 除