LWP :: UserAgent가 만료 된 SSL 인증서를 수락하도록 강요 할 수 있습니까?
문제
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 레벨에서 솔루션을 선호합니다. 물론 나는 여전히 많은 자유 시간에 그런 해결책을 직접 찾고 있습니다.
해결책
주소 주소로 업데이트되었습니다
우회합니다 모두 인증서 확인을 설정할 수 있습니다 에이전트 인증서를 확인하지 않습니다.
$agent->ssl_opts(verify_hostname => 0);
에이전트는 또한 설정을 사용중인 SSL 소켓 구현으로 전달합니다. 예를 들어IO::Socket::SSL
당신은 설정할 수 있습니다 SSL_verify_mode
에게 0x00
.
$agent->ssl_opts(SSL_verify_mode => 0x00);
다른 팁
SSL 인증서 유효성 검사를 재정의하십시오
$agent->ssl_opts(verify_hostname => 0,
SSL_verify_mode => 0x00);
HTTPS 요청을하기 전에.
제휴하지 않습니다 StackOverflow