我将perl Package 器用于elasticsearch:“search::elasticsearch”我创建了一个对象,如下所示:
use Search::Elasticsearch;
my $e = Search::Elasticsearch->new( nodes => "192.168.0.66:9200", debug => 1);
它工作得很好,我可以使用这个对象查询elasticsearch节点。然后我尝试连接到使用自签名证书启用ssl的elasticsearch节点。我使用以下命令:
use Search::Elasticsearch;
my $e = Search::Elasticsearch->new( nodes => "192.168.0.66:9200", use_https => 1, userinfo => "testuser:testpwd", debug => 1);
但它不起作用。
如果我使用curl查询elasticsearch,我将使用以下命令:
curl https://testuser:testpwd@192.168.0.67:9200
这也不行。当我将-k开关与curl一起使用时:
curl https://testuser:testpwd@192.168.0.67:9200 -k
那就行了。我从elasticsearch节点得到响应。
现在我想使用相同的过程使用perl模块:search::elasticsearch查询相同的启用ssl的elasticsearch节点。正确的语法是什么?如何以及在何处定义'-k'开关?
1条答案
按热度按时间lc8prwob1#
使用
-k
是同义词--insecure
所以curl不会验证证书。那么问题是,在允许不安全连接的情况下,通过加密的ssl通道进行查询有多有用?这就违背了使用ssl的初衷,对吧?
如果您拥有对证书进行签名的ca(您应该这样做),那么您应该将其与
--cacert
curl 开关或者使用perl,您还可以在
ssl_options
```use Search::Elasticsearch;
use IO::Socket::SSL;
my $es = Search::Elasticsearch->new(
nodes => [
"192.168.0.66:9200"
],
userinfo => "testuser:testpwd",
debug => 1,
ssl_options => {
SSL_verify_mode => SSL_VERIFY_PEER,
SSL_ca_file => '/path/to/cacert.pem',
SSL_verifycn_scheme => 'http',
}
);