Могу ли я заставить LWP :: UserAgent принять сертификат SSL с истекшим сроком действия?

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

Вопрос

Я хотел бы знать, возможно ли заставить 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, если такое решение существует, так как я предпочитаю не ослаблять безопасность для других не связанных приложений. Конечно, я все еще ищу такое решение в свободное время.

Это было полезно?

Решение

Обновлено с учетом комментариев

Чтобы обойти все проверки сертификатов, вы можете установить агент , чтобы не проверять сертификат.

$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