0

我正在使用弹性搜索 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)

我怎样才能解决这个问题?

4

1 回答 1

1

我认为您最好将字段作为 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按照上面的链接所示使用。

于 2016-06-07T15:45:41.470 回答