Perl Search::Elasticsearch 不适用于具有自签名证书的启用 SSL 的节点
Perl Search::Elasticsearch doesn't work with SSL enabled node with Self-signed certificate
我正在为 Elasticsearch 使用 Perl 包装器:“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 模块查询相同的启用 SSL 的 Elasticsearch 节点:Search::Elasticsearch。什么是正确的语法以及定义“-k”开关的方式和位置?
使用 -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',
}
);
我正在为 Elasticsearch 使用 Perl 包装器:“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 模块查询相同的启用 SSL 的 Elasticsearch 节点:Search::Elasticsearch。什么是正确的语法以及定义“-k”开关的方式和位置?
使用 -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',
}
);