Elasticsearch:安装shield时无法使用python连接

时间:2016-06-07 15:19:51

标签: python python-2.7 ssl elasticsearch elasticsearch-2.0

我正在使用elasticsearch 2.3.1和python 2.7。我正在尝试创建一个简单的实例并测试为

esInstance = Elasticsearch(['https://'+shield_uname+":"+shield_pass+"@"+server+":"+port])

print esInstance.info()

但是我得到了

elasticsearch.exceptions.SSLError: ConnectionError(EOF occurred in violation of protocol (_ssl.c:590)) caused by: SSLError(EOF occurred in violation of protocol (_ssl.c:590))
我在做错了什么?我尝试

时遇到同样的错误
requests.get("https://"+shield_uname+":"+shield_pass+"@"+server+":"+port, verify=False)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我认为你只是passing the fields as arguments会更好,因为你已经将它们作为单独的变量。

这是最全面的"版本的身份验证示例,插入变量:

# SSL client authentication using client_cert and client_key

es = Elasticsearch(
    [server],
    http_auth=(shield_uname, shield_pass),
    port=port,
    use_ssl=True,
    verify_certs=True,
    ca_certs='/path/to/cacert.pem',
    client_cert='/path/to/client_cert.pem',
    client_key='/path/to/client_key.pem',
)

请注意port之后的参数都处理SSL。如果您实际使用的是证书,那么您需要确保已经告诉Python有关它们的信息。如果您使用的是标准证书,则可以使用certifi,如上面的链接所示。