Problemas SSL no LWP do Perl após o upgrade do Debian Wheezy

3

Acabei de atualizar para o Debian Wheezy da Lenny (longa história) e alguns dos meus pacotes Perl não fizeram a atualização por algum motivo, entre eles Crypt :: SSLeay (libcrypt-ssleay-perl).

Não consegui conectar-me ao meu gateway de pagamento com cartão de crédito usando o LWP até instalar o libcrypt-ssleay-perl e agora ele "funciona", mas leva de 15 a 20 segundos para estabelecer a conexão SSL devido ao erro muito inútil mensagem "erro em estado desconhecido":

SSL_connect:before/connect initialization
SSL_connect:unknown state
(waiting 15-20 seconds...) #this comment is from waldo22
SSL_connect:error in unknown state
SSL_connect:before/connect initialization
SSL_connect:SSLv3 write client hello A
SSL_connect:SSLv3 read server hello A
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read finished A

Tenho a sensação de que isso tem algo a ver com a LWP, que altera o comportamento padrão das autoridades de certificação e a verificação do certificado de servidor: link
e possivelmente: link

Meu módulo Perl está usando Crypt :: SSLeay via LWP :: useragent .

Obviamente 15-20 segundos é muito longo para esperar para fazer uma conexão SSL, mas sem uma mensagem de erro mais útil, eu não sei o que fazer.

Alguém tem alguma sugestão sobre como melhor depurar isso ou obter uma saída mais detalhada?

Muito obrigado,

-Wes

    
por waldo22 20.06.2012 / 00:56

1 resposta

1

Uau, esse foi um desafio.

Parece que é um problema com o OpenSSL 1.0.1, onde a tentativa de negociar automaticamente com o TLS1.1 (ou 1.2 ???) com alguns servidores (edit: BigIP servers executando firmware < 10.2.4) faz com que esses servidores descartem a conexão e rejeitem a solicitação. Veja:

link

link

Estou tentando conectar-me ao gateway de cartão de crédito "Payflow Pro" do Paypal, e o Paypal foi um dos principais culpados na lista, originalmente.

De acordo com o ticket do bug, eles dizem que é "fixo" para o Paypal no 1.0.1b, mas eu estou rodando o 1.0.1c-3 e ainda sinto o problema. Eu não sei se isso significa que é fixo para www.paypal.com mas não payflowpro.paypal.com , ou o quê.

WORKAROUND: Configurar $ENV{HTTPS_VERSION} = 3 para forçar o SSL3 parece corrigir o problema, pelo menos para Crypt :: SSLeay .

Presumivelmente, isso funciona porque ele não tenta negociar o TLS1.1 e apenas usa o SSL3.

Testando com o openssl s_client, ele funciona com as opções -ssl3 , -tls1 e -no_tls1 , então deve ser um problema de negociação, na minha opinião.

De qualquer forma, isso é uma solução alternativa, pelo menos.

O problema real é causado por um bug no firmware dos balanceadores de carga F5 BigIP com firmware menor que 10.2.4. Isso faz com que as conexões TLS 1.1 ou 1.2 não respondam adequadamente às solicitações longas do ClientHello e, portanto, interrompam.

A correção real é atualizar o firmware no balanceador de carga BigIP para > = 10.2.4.

É claro que o Paypal / Payflow culpou o OpenSSL por isso ...

    
por 01.08.2012 / 20:05