LWP :: UserAgent가 만료 된 SSL 인증서를 수락하도록 강요 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/336575

문제

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 요청을하기 전에.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top