2014-12-29 236 views
2

我在嘗試將POST消息發送到網站時收到證書錯誤。PERL Get_Server_Certificate證書驗證失敗錯誤

我收到的錯誤:

LWP::Protocol::https::Socket: SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed at /usr/lib/perl5/site_perl/5.8.8/LWP/Protocol/http.pm line 49

,我正在使用的代碼是:

my $webpage = ""; 

my $ua = LWP::UserAgent->new(); 
$ua->agent('Mozilla'); 

$webpage = "https://mysite:444/myapp/app.aspx"; 


my $msg = 'An XML Message'; 

my $req = POST $webpage, 
       Content_Type => 'text/xml', 
       Content => $msg; 

到目前爲止,我已經嘗試了一些「補丁」,我」 ve在線發現:

試圖通過環境變量禁用驗證主機名: $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0;

嘗試禁用通過ssl_opts驗證主機名:

my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0 },); 

使用Mozilla CA和設置HTTPS_CA_FILE到/usr/lib/perl5/site_perl/5.8.8/Mozilla/CA/cacert.pem試過嗎?

在這一點上,我沒有選擇嘗試,所以我希望有人遇到過這個問題,可以提供援助。

+0

請指出您正在使用的庫的哪些版本,即perl -MLWP :: UserAgent -e'警告LWP :: UserAgent-> VERSION''和LWP :: Protocol :: https和IO相同: :插座:: SSL。同時檢查訪問是否使用普通瀏覽器獲得成功,或者是否對無效證書抱怨。 –

+0

哇!我認爲你在釘上擊中它!我的LWP :: UserAgent和IO :: Socket :: SSL是最新版本,但LWP :: Protocol :: https庫甚至沒有安裝。 雖然試圖安裝它,但我掛斷了http-nb.t 1/14 你以前遇到過這個嗎? –

+1

如果將LWP :: UserAgent安裝爲最新版本,則不會在未安裝LWP :: Protocol :: https的情況下執行任何HTTPS請求,因此您不應該得到有關證書驗證問題的此SSL相關錯誤消息。不,我沒有得到測試中的錯誤,但請注意Perl 5.8.8。是一箇舊的,完全不受支持的版本(甚至不是5.8.x系列的最後一個版本),並且可能會有一些問題沒有人修復。 –

回答

0

這只是一個錯字,用 「verify_hostname」 不帶 「s」:

我的$ UA = LWP :: UserAgent->新(ssl_opts => {verify_hostname => 0});

+0

感謝您的支持,這實際上是我輸入StackOverflow時發生的錯誤,而不是原始代碼。 –

相關問題