Curl和Python SSL lib使用的SSL版本存在问题

TL; DR我想要达到一个只需要SSLv3的URI。 如果我尝试使用curl或Python请求(使用ssl模块)来访问它,它不起作用(不同的错误)。

一些更长的解释

这个API有这个URI: https : //api.mercadolibre.com/sites/MLA/search? q = ipod

  1. 如果我尝试使用浏览器访问该URI,它可以正常工作(Chrome和FF)。

  2. 如果我尝试curl它: curl -Iv https://api.mercadolibre.com/sites/MLA/search?q=ipod它不起作用。 返回的错误是:

     curl: (35) Unknown SSL protocol error in connection to api.mercadolibre.com:443 
  3. 强制curl使用SSLv3正常工作:

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

    回答:

     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 --- 

怎么可能浏览器连接好,curl和Python不是? 我应该如何解决这个问题? 这是甚至我的问题(或API的所有者)?

关于我的系统的信息

  • Ubuntu 14.04
  • OpenSSL 1.0.1f 2014年1月6日

当问到这个问题的时候,这个网站支持一小部分非常微弱的密码套件,并且与现代用户代理几乎没有兼容性。 因此,大多数浏览器甚至机器人都不可能谈判一个连接,更不用说一个安全的连接了。

自那以后,该网站一直(大部分)是固定的; 虽然密码套件和其他问题仍然较弱,但至less应该起作用。