我有一個私人證書,我使用外部網絡服務器進行身份驗證。我想自動下載網頁,但是每當它發出請求時,它都需要我的私鑰密碼。有沒有辦法通過腳本以某種方式提供此密鑰(無論是在環境變量還是以其他方式)?一個小小的警告:這需要在Windows機器上運行,所以我不能使用Expect模塊。如何在HTTP請求中使用證書時提供私人密碼?
這裏是我到目前爲止的代碼:
use strict;
use warnings;
use LWP::UserAgent;
my $output_doc = $ARGV[0];
my $url = $ARGV[1];
$ENV{HTTPS_PROXY} = 'http://1.2.3.4:3128';
$ENV{PERL_NET_HTTPS_SSL_SOCKET_CLASS} = "Net::SSL";
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
$ENV{HTTPS_DEBUG} = 1;
$ENV{HTTPS_CERT_FILE} = 'test_cert/cert.pem';
$ENV{HTTPS_KEY_FILE} = 'test_cert/private.key';
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(GET => "$url");
my $response = $ua->request($req);
open OUT, ">$output_doc";
print OUT $response->as_string;
close OUT;
到目前爲止,它工作正常。它會拉下我在第二個參數中提供的網頁,但是對於每個頁面,我必須鍵入我的PEM密碼。感謝您的任何建議!
感謝您的建議。儘管如此,我們仍想保留密碼。 – Magicked 2012-04-18 19:30:28
如果密鑰的密碼是以明文形式存儲在腳本中的,那麼首先密碼並沒有真正的意義。 – josh3736 2012-04-18 19:32:41