我想知道是否有可能强制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