Problemas com as versões SSL usadas pelo lib Curl e Python SSL

2

TL; DR Eu estou tentando alcançar um URI que só leva SSLv3. Se eu tentar acessá-lo com curl ou solicitações do Python (que usa o módulo ssl) ele não funciona (erros diferentes).

Alguma explicação mais longa

Existe esta API que tem este URI: link

  1. Se eu tentar acessar esse URI com o navegador, ele funcionará bem (Chrome e FF).

  2. Se eu tentar enrolar: curl -Iv https://api.mercadolibre.com/sites/MLA/search?q=ipod não funciona. O erro retornado é:

    curl: (35) Unknown SSL protocol error in connection to api.mercadolibre.com:443
    
  3. Forçar o curl a usar o SSLv3 funciona bem:

    curl --sslv3 -Iv https://api.mercadolibre.com/sites/MLA/search?q=ipod
    
  4. openssl s_client -connect api.mercadolibre.com:443

    responde com:

    CONNECTED(00000003)
    write:errno=104
    ---
    no peer certificate available
    ---
    No client certificate CA names sent
    ---
    SSL handshake has read 0 bytes and written 305 bytes
    ---
    New, (NONE), Cipher is (NONE)
    Secure Renegotiation IS NOT supported
    Compression: NONE
    Expansion: NONE
    ---
    

Como é possível que o navegador esteja se conectando Ok e curl e Python não? Como devo consertar isso? Isso é mesmo meu problema (ou o proprietário da API)?

Informações sobre o meu sistema

  • Ubuntu 14.04
  • OpenSSL 1.0.1f 6 de janeiro de 2014
por santiago.basulto 26.08.2014 / 22:00

1 resposta

1

No momento em que esta pergunta foi feita, o site em questão suportava apenas uma pequena seleção de conjuntos de codificação muito fracos e tinha pouca compatibilidade com os agentes de usuários modernos. Assim, era impossível que a maioria dos navegadores ou até mesmo robôs negociassem uma conexão, muito menos uma conexão segura.

O site foi (principalmente) fixo desde então; enquanto ainda tem conjuntos de codificação fracos e outros problemas, deve pelo menos ser funcional.

    
por 10.06.2015 / 16:53