首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl Search::Elasticsearch不适用于具有自签名证书的启用SSL的节点

Perl Search::Elasticsearch不适用于具有自签名证书的启用SSL的节点
EN

Stack Overflow用户
提问于 2020-12-04 15:17:19
回答 1查看 67关注 0票数 1

我使用Perl wrapper for Elasticsearch:"Search::Elasticsearch“创建一个对象,如下所示:

代码语言:javascript
复制
use Search::Elasticsearch;
my $e = Search::Elasticsearch->new( nodes => "192.168.0.66:9200", debug => 1);

它工作得很好,我可以使用这个对象来查询Elasticsearch节点。然后,我尝试连接到使用自签名证书为SSL启用的Elasticsearch节点。我使用以下命令:

代码语言:javascript
复制
use Search::Elasticsearch;
my $e = Search::Elasticsearch->new( nodes => "192.168.0.66:9200", use_https => 1, userinfo => "testuser:testpwd", debug => 1);

但它不起作用。

如果我使用curl查询Elasticsearch,我使用以下命令:

代码语言:javascript
复制
curl https://testuser:testpwd@192.168.0.67:9200

这也不起作用。当我将-k开关与curl一起使用时:

代码语言:javascript
复制
curl https://testuser:testpwd@192.168.0.67:9200 -k

那么它工作得很好。我从Elasticsearch节点得到响应。

现在,我想使用相同的过程使用Perl模块: Search::Elasticsearch来查询相同的启用了SSL的Elasticsearch节点。什么是正确的语法,如何以及在哪里定义'-k‘开关?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-04 15:34:20

使用-k--insecure的同义词,因此curl不会验证证书。那么,问题是,在允许不安全连接的同时通过加密的SSL通道进行查询有多大用处?

这有点违背了使用SSL的初衷,对吧?

如果您有签署证书的CA (您应该这样做),那么您应该将其与--cacert curl开关一起使用

代码语言:javascript
复制
curl --cacert /path/to/cacert.pem https://testuser:testpwd@192.168.0.67:9200

或者使用Perl,您还可以使用specify the CA cert in the ssl_options

代码语言:javascript
复制
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',
    }
);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65139381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档