我使用Perl wrapper for 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‘开关?
发布于 2020-12-04 15:34:20
使用-k是--insecure的同义词,因此curl不会验证证书。那么,问题是,在允许不安全连接的同时通过加密的SSL通道进行查询有多大用处?
这有点违背了使用SSL的初衷,对吧?
如果您有签署证书的CA (您应该这样做),那么您应该将其与--cacert curl开关一起使用
curl --cacert /path/to/cacert.pem https://testuser:testpwd@192.168.0.67:9200或者使用Perl,您还可以使用specify the CA cert in the 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',
}
);https://stackoverflow.com/questions/65139381
复制相似问题