2012-01-25 108 views
2

我正在使用LWP :: UserAgent將XML數據POST發佈到遠程服務器。遠程URL是https,他們向我發送了一個.crt文件以安裝在我的服務器上。LWP :: UserAgent將XML發佈到安全服務器...證書問題

當我嘗試連接到他們的服務器,我得到以下信息:

An Error Occurred

500 Can't connect to previewtest.clverify.com:443 (certificate verify failed) 500 Can't connect to previewtest.clverify.com:443 (certificate verify failed) Content-Type: text/plain Client-Date: Wed, 25 Jan 2012 05:11:24 GMT Client-Warning: Internal response Can't connect to previewtest.clverify.com:443 (certificate verify failed) LWP::Protocol::https::Socket: SSL connect attempt failed with unknown errorerror:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed at /usr/lib/perl5/site_perl/5.8.8/LWP/Protocol/http.pm line 51.

如何恰當地引用我的服務器上的SSL證書並將其發送給他們的?

下面是代碼:

sub ConsumerInfo { 
my $cid = shift; 

my $response = undef; 
my $sendXML = &Create_ConsumerInfo_Request($cid); 
if ($sendXML) { 
    &DoXMLUpload($sendXML); 

    my $browser = LWP::UserAgent->new(agent => 'perl post'); 
    $browser->credentials('sumURL:443','sumRealm','sumUserID'=>'sumPassword'); 
    $response = $browser->request(POST 'sumFullURL', 
     Content_Type => 'text/xml', 
     Content => $sendXML); 
    print "Content-type:text/html\n\n"; 
    print $response->error_as_HTML unless $response->is_success; 
    print $response->as_string; 
} else { 
    &ErrorMsg("No XML Code Was Found."); 
    exit; 
} 
# =============================================================== 
# Need to insert parser in here to convert this into an array. 
# =============================================================== 
return $response; 
} 

現在...讓我們說,這是送給我的證書位於/usr/bin/some_dir/DigiCertCA.crt。

如何設置此項以在服務器被調用時檢查我的證書?

+0

作爲附加信息,我們連接到第三方供應商送了我2個.CRT文件:DigiCertCA.crt和TrustedRoot.crt。我使用CPanel將它們安裝在我的服務器上。 –

+0

一些示例Perl代碼對我們很有幫助,可以幫助您。 –

+0

對不起......只是編輯了這個問題,並貼出了一些代碼。 –

回答

1

首先,我想嘗試改變my $browser行:

my $browser = LWP::UserAgent->new(
    agent => 'perl post', 
    ssl_opts => { 
    verify_hostname => 1, 
    SSL_ca_path => '/usr/bin/some_dir', 
    }, 
); 
+0

感謝您的意見...我會盡力的。 :) –

+0

行...做了改變,沒有效果。以下是目前正在運行的代碼: my $browser = LWP::UserAgent->new(agent => 'perl post', \t \t ssl_opts => { \t \t verify_hostname => 1, \t \t SSL_ca_path => '/home/site/ssl/certs/', \t \t },); \t $browser->credentials('netaddr:port','realm','username'=>'password'); \t $response = $browser->request(POST 'fullURL', \t \t Content_Type => 'text/xml', \t \t Content => $sendXML); }