总结 我正在尝试访问仅接受 SSLv3 的 URI。如果我尝试使用 curl 或 Python 请求(使用 ssl 模块)访问它,它不起作用(不同的错误)。
一些更长的解释
有一个 API 具有以下 URI:https://api.mercadolibre.com/sites/MLA/search?q=ipod
如果我尝试使用浏览器访问该 URI,它可以正常工作(Chrome 和 FF)。
如果我尝试卷曲它:
curl -Iv https://api.mercadolibre.com/sites/MLA/search?q=ipod
它不起作用。返回的错误是:curl: (35) Unknown SSL protocol error in connection to api.mercadolibre.com:443
强制 curl 使用 SSLv3 可以正常工作:
curl --sslv3 -Iv https://api.mercadolibre.com/sites/MLA/search?q=ipod
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 日
答案1
在提出这个问题时,该网站支持仅有的一小部分非常弱的密码套件,与现代用户代理的兼容性很差。因此,大多数浏览器甚至机器人都无法协商连接,更不用说安全连接了。
该网站此后已(大部分)修复;虽然它仍然存在弱密码套件和其他问题,但它至少应该可以正常运行。