我想知道是否有可能強制LWP :: UserAgent接受單個知名服務器的過期SSL證書。這個問題在兩者之間的Squid代理有點複雜。我可以強制LWP :: UserAgent接受過期的SSL證書嗎?
我去儘可能建立一個調試環境,如:
use warnings;
use strict;
use Carp;
use LWP::UserAgent;
use LWP::Debug qw(+);
use HTTP::Cookies;
my $proxy = 'http://proxy.example.net:8118';
my $cookie_jar = HTTP::Cookies->new(file => 'cookies.tmp');
my $agent = LWP::UserAgent->new;
$agent->proxy([ 'http' ], $proxy);
$agent->cookie_jar($cookie_jar);
$ENV{HTTPS_PROXY} = $proxy;
$ENV{HTTPS_DEBUG} = 1;
$ENV{HTTPS_VERSION} = 3;
$ENV{HTTPS_CA_DIR} = '/etc/ssl/certs';
$ENV{HTTPS_CA_FILE} = '/etc/ssl/certs/ca-certificates.crt';
$agent->get('https://www.example.com/');
exit;
好在這個問題最終被固定在遠程服務器上,我能夠拿出自己的解決方案之前,但我想能夠有選擇地繞過問題,如果它再次出現(底層服務已被打亂了幾個小時,然後才被採取行動)。
如果存在這樣的解決方案,我寧願在基於Crypt :: SSLeay或openSSL實現的LWP :: UserAgent級別上使用一個解決方案,因爲我寧願不放鬆其他不相關應用程序的安全性。當然,我仍然在自己的空閒時間裏尋找這樣的解決方案。
這有時被引用爲解決方案,但它似乎並不適用於我的情況;儘管如此,我沒有時間對它進行廣泛的測試,而且我可能會犯錯誤。 我打算在測試環境中驗證它是否適用於我。 – 2008-12-09 08:28:22