2012-01-25 46 views
0

OK ...これがもっと明確であるかどうかを見てみましょう。XML用のLWP :: UserAgent HTTPSサーバへのPOSTが動作しない

LWP :: UserAgentを経由してXML文書のPOSTをリモートのサードパーティサーバに行っています。

彼らは私のサーバーにインストールした.crtファイルを私に送ってきて、CPanelとPuttyコマンドラインの "locate"呼び出しによって、自分のアドレスとその存在を確認しました。証明書はそこにあります。

私は、LWP :: Protocol :: httpsと、Mozilla :: CA、Crypt :: SSLeayなどの他のすべての必要なPerlモジュールがインストールされていることを確認しました。

私はスクリプトを実行すると、私は次のエラーを取得する:

sub ConsumerInfo { 
my $cid = shift; 

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

    my $browser = LWP::UserAgent->new(agent => 'site_perl', 
     ssl_opts => { 
      verify_hostname => 1, 
      SSL_ca_path => '/home/<mysite>/ssl/certs/', 
     },); 
    $browser->credentials('shortURL:port','realm','username'=>'password'); 
    $response = $browser->request(POST 'longURL', 
     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; 
} 

任意の考え:

An Error Occurred

500 Can't connect to shortURL:port (certificate verify failed) 500 Can't connect to shortURL:port (certificate verify failed) Content-Type: text/plain Client-Date: Wed, 25 Jan 2012 17:53:36 GMT Client-Warning: Internal response Can't connect to shortURL:port (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.

ここでは、呼び出し元のコードですか?私はここでアイデアを使い果たしている。 :(

+0

本当に 'shortURL:port'に接続しようとしていますか? –

+0

これらは、実際のネットワークアドレス:ポート番号の代替値です。実際の値は "somedomain.com:443"のようになります。 –

答えて

0
rm -f /home/site/ssl/certs/* 

wget --no-check-certificate \ 
      -O /home/site/ssl/certs/DigiCertHighAssuranceCA-3.crt.pem \ 
    https://www.digicert.com/CACerts/DigiCertHighAssuranceCA-3.crt 

wget --no-check-certificate \ 
       -O /home/site/ssl/certs/DigiCertHighAssuranceEVRootCA.crt.pem \ 
    https://www.digicert.com/testroot/DigiCertHighAssuranceEVRootCA.crt 

c_rehash /home/site/ssl/certs/ 

echo -n | openssl s_client -connect previewtest.clverify.com:443 -CApath /home/site/ssl/certs 

サード最後の行はが戻りコードを確認し、今言う:0(OK)

echo -n | HTTPS_CA_DIR=/home/site/ssl/certs lwp-request -m POST https://previewtest.clverify.com/webservice/exec 

応答は暗号段階を過ぎ、今行くとTomcatのエラーメッセージを返します

。図示のLWPとSSL_ca_pathのPerlコードも少なくとも暗号部分は動作します。


幅広いヒント:OpenSSLのドキュメントとおそらくは関連する1冊または2冊の本と座って、基本的な概念を学ぶために徹底したRTFMを行ってください。あなたが実際に何を理解することなくこれを実装すれば、いつか誰かがあなたのトランスミッションをMITMし、あなたが何かが間違っていることに気付かずに、それがあなたの頭になるでしょう。

+0

RTFM? MITMs?無知をおかけして申し訳ありません。あなたは正しいです...私はこのことにもっと慣れ親しむ必要があります。 16年ぶりに私はXMLを安全なサイトに行った。 これは痛みですが、投稿した内容を説明することはできますか?私はTomcatのエラーメッセージが何であるか分かりません。 1時間ごとに相談しますか? –

+0

RTFMとMITMの説明には心配しないでください。とった。私は本当にあなたを気にかけて申し訳なく思っていますが、実際には無礼が必要だとは思わなかったのです。 –

関連する問題