【发布时间】:2010-09-25 02:15:40
【问题描述】:
我想知道是否可以强制 LWP::UserAgent 接受单个知名服务器的过期 SSL 证书。中间的 Squid 代理会使问题稍微复杂化。
我什至设置了一个调试环境,例如:
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;
幸运的是,在我想出自己的解决方案之前,问题最终在远程服务器上得到解决,但我希望能够在问题再次出现时有选择地规避问题(基础服务已经中断了好几次)在我被要求采取行动前几个小时)。
如果存在这样的解决方案,我更倾向于 LWP::UserAgent 级别的解决方案,而不是基于底层 Crypt::SSLeay 或 openSSL 实现的解决方案,因为我不希望放松其他不相关应用程序的安全性。当然,我自己仍在寻找这样的解决方案,在我丰富的空闲时间。
【问题讨论】:
标签: perl https openssl squid lwp