首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >REST::Client:如何忽略SSL证书

REST::Client:如何忽略SSL证书
EN

Stack Overflow用户
提问于 2013-06-17 04:56:29
回答 2查看 16.4K关注 0票数 6

我正在使用REST::Client,而我的代码在SSL错误时失败。

以下是代码:

代码语言:javascript
运行
复制
#!usr/bin/perl -w
use strict;
use REST::Client;

my $client = REST::Client->new();

$client->GET("https://something/api/sessions");
print $client->responseContent();

这是输出:

代码语言:javascript
运行
复制
WP::Protocol::https::Socket: SSL connect attempt failed with unknown error error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed at /usr/local/share/perl/5.10.1/LWP/Protocol/http.pm line 51.

我知道问题所在。REST::Client不能忽略SSL证书。

当我不使用“curl”选项时,我得到了与-k完全相同的错误:

下面是curl命令:

代码语言:javascript
运行
复制
curl -i -H "Accept:application/*+xml;version=1.5" -u "username@system:password" -X post https://something/api/sessions

下面是curl输出(错误):

代码语言:javascript
运行
复制
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

但是,如果我将"-k“添加到curl命令中,那么它就能正常工作。

在curl的手册页面中,有关于“-k”的解释:

代码语言:javascript
运行
复制
(SSL)  This  option  explicitly  allows  curl to perform "insecure" SSL connections and transfers.

问题:

那么,如何使REST::Client忽略SSL证书呢?或者还有其他优雅的工作方式吗?我看了一下CPAN上的REST::Client文档,但是它没有提到这一点。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-17 07:01:40

我是通过添加以下一行来实现的:

代码语言:javascript
运行
复制
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0;

参考资料:https://splash.riverbed.com/docs/DOC-1602

票数 5
EN

Stack Overflow用户

发布于 2016-07-14 14:50:47

我发现这个选项并没有完全解决LWP 6.x中的问题。对我来说,这是可行的:

代码语言:javascript
运行
复制
# setup rest client                                                                                                             
my $client = REST::Client->new();                                                                                               

# don't verify SSL certs                                                                                                        
$client->getUseragent()->ssl_opts(verify_hostname => 0);                                                                        
$client->getUseragent()->ssl_opts(SSL_verify_mode => SSL_VERIFY_NONE);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17140642

复制
相关文章

相似问题

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