我正在尝试连接到 Elasticsearch
来自 python
与 SSL
并使用基本代码:
from elasticsearch import Elasticsearch
from ssl import create_default_context
context = create_default_context(cafile="path/to/cafile.pem")
es = Elasticsearch("https://elasticsearch.url:port", ssl_context=context, http_auth=('elastic','yourpassword'))
来自:https://github.com/elastic/elasticsearch-py
我需要供应
cafile.pem
, 和 http_auth
参数。在我的python
所在的服务器上正在运行 SSL 连接已设置,因此我可以对 Elasticsearch
进行基本查询.它是使用 ~/.ssh
中的 key 设置的目录:id_rsa
, id_rsa.pub
.所以,现在我想知道我是否应该提供 id_rsa.pub
代替 path/to/cafile.pem
的 key ,如果是,那么我需要更改 ~/.ssh
的权限从安全角度来看,这似乎不是一个好主意。然后,我不确定 .pub
与 .pem
相同,我需要先转换它吗?那么,也应该http_auth
只是被省略,因为我在终端中进行简单查询时不使用任何密码?我应该如何根据最佳实践解决这个问题(在 python 中设置对 ES
的访问权限 SSL
) - 这就是问题所在。Update
我都试过了
.pub
并从中生成 pem
:https://serverfault.com/questions/706336/how-to-get-a-pem-file-from-ssh-key-pair
但两者都失败了
create_default_context
与 unknown error
在 context.load_verify_locations(cafile, capath, cadata)
.
最佳答案
我的特定案例的答案非常简单。我在这里找到了:
https://elasticsearch-py.readthedocs.io/en/master/
es = Elasticsearch(['https://user:secret@localhost:443'])
刚刚指定
https
url
在里面,它马上就解决了。
关于python - 使用 SSL 使用 python 连接到 Elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61961725/