lwp-request falha após a atualização para o Centos 7

0

Eu tenho um script bash que roda bem no centos 6, que tem um pedido de lwp nele. Eu atualizei meu sistema para o Centos 7 e a solicitação não foi executada:

# lwp-request -E https://localhost/admin/startup
GET https://localhost/admin/startup
User-Agent: lwp-request/6.03 libwww-perl/6.05

500 Can't connect to localhost:443
Content-Type: text/plain
Client-Date: Sun, 25 Jan 2015 10:24:22 GMT
Client-Warning: Internal response

Can't connect to localhost:443

verifiquei que o URL pode ser acessado por meio do navegador.
Minha suposição é que esse é um problema de atualização de bibliotecas perl.
Quais permissões são necessárias para a rede SSL / TLS com o pedido lwp?
Ou o que foi alterado nessas bibliotecas:

perl-libwww-perl
perl-Crypt-SSLeay

AVISO
No Centos 7 eu tenho essas (e algumas mais) novas bibliotecas instaladas que podem estar relacionadas a isso:

perl-Net-SSLeay
perl-IO-Socket-SSL
    
por csny 25.01.2015 / 11:41

1 resposta

1

IO :: Socket :: SSL verifica se o nome no certificado corresponde ao nome ao qual você se conecta, mas o Crypt :: SSLeay não. O LWP mais recente também verifica a cadeia de certificados por padrão, mas talvez isso também tenha sido feito com a versão antiga do LWP que você usou.

Eu recomendo que você chame seu programa com depuração SSL para ver a causa real do problema:

perl -MIO::Socket::SSL=debug4 program.pl

Então você pode controlar com ssl_opts quais verificações devem ser feitas, veja perldoc IO::Socket::SSL para mais detalhes sobre as opções:

  • Use SSL_ca_file se você estiver usando um certificado autoassinado ou se o certificado não for emitido por nenhuma das CAs raiz comumente confiáveis.
  • Use SSL_verifycn_name para definir o nome esperado no certificado. Isto é, se você tiver um nome para www.example.com no certificado, mas se conectar ao host com localhost , você deve definir SSL_verifycn_name => 'www.example.com'
  • Como alternativa, você pode usar SSL_fingerprint para verificar apenas a impressão digital do certificado e desativar outras verificações.
  • E, finalmente, você pode desativar qualquer tipo de verificação com SSL_verify_mode . Mas isso é apenas uma solução alternativa e você nunca deve fazer isso no código de produção, porque isso faz com que você abra para ataques man-in-the-middle.

Como você não pode definir ssl_opts diretamente com lwp-request , em vez disso, recomendo usar um programa pequeno, por exemplo:

  use LWP::UserAgent;
  my $ua = LWP::UserAgent->new( ssl_opts => { 
      SSL_ca_file => 'myca.pem',
      SSL_verifycn_name => 'www.example.com',
  });
  print $ua->get('https://...')->as_string;
    
por 25.01.2015 / 12:14

Tags