Pergunta

Gostaria de saber se é possível forçar LWP :: UserAgent para aceitar um certificado SSL expirado para um único servidor, bem conhecido. A questão é um pouco complicada pelo proxy Squid no meio.

Eu fui tão longe como para configurar um ambiente de depuração como:

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;

Felizmente, a questão foi finalmente fixas no servidor remoto antes de eu era capaz de chegar a minha própria solução, mas eu gostaria de ser capaz de contornar opcionalmente o problema deveria surgir de novo (o serviço subjacente tinha sido interrompido por vários horas antes fui chamado em ação).

Eu seria a favor de uma solução ao nível LWP :: UserAgent mais de um com base nas subjacentes implementações Crypt :: SSLeay ou OpenSSL, se existe uma solução deste tipo, desde que eu prefiro não relaxar segurança para outras aplicações não relacionadas. É claro que eu ainda estou à procura de uma tal solução mim, no meu tempo livre abundante.

Foi útil?

Solução

Atualizado para comentário endereço

Para ignorar todas cheques certificado pode definir o agente até não verificar o certificado.

$agent->ssl_opts(verify_hostname => 0);

O agente também passará configurações para baixo para a implementação de soquete SSL está sendo usado. Por exemplo, com IO::Socket::SSL você pode definir SSL_verify_mode para 0x00.

$agent->ssl_opts(SSL_verify_mode => 0x00);

Outras dicas

Tente substituir o certificado SSL de validação com

$agent->ssl_opts(verify_hostname => 0,
              SSL_verify_mode => 0x00);

antes de fazer o pedido https.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top