6

私は作業しREST::Clientていますが、私のコードは SSL エラーで失敗します。

コードは次のとおりです。

#!usr/bin/perl -w
use strict;
use REST::Client;

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

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

出力は次のとおりです。

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::ClientSSL 証明書を無視することはできません。

curl「-k」オプションを使用しない場合とまったく同じエラーが発生します。

これがcurlコマンドです:

curl -i -H "Accept:application/*+xml;version=1.5" -u "username@system:password" -X post https://something/api/sessions

ここにcurl出力(エラー)があります:

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

ただし、curl コマンドに「-k」を追加すると、問題なく動作します。

curl の man ページから、「-k」の説明を次に示します。

(SSL)  This  option  explicitly  allows  curl to perform "insecure" SSL connections and transfers.

質問:

REST::Clientでは、 SSL証明書を無視するにはどうすればよいですか? または、他のエレガントな方法はありますか? CPANのREST::Clientドキュメントを読みましたが、これについては何も語られていません。

ありがとう。

4

2 に答える 2

4

このオプションは、LWP 6.x の問題を完全には解決していないことがわかりました。私にとってこれはうまくいきました:

# 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);
于 2016-07-14T14:50:47.093 に答える
4

以下の行を追加して動作させました:

$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0;

参照: https://splash.riverbed.com/docs/DOC-1602

于 2013-06-17T07:01:40.953 に答える