Назад | Перейти на главную страницу

Проблемы с версиями SSL, используемыми Curl и Python SSL lib

TL; DR Я пытаюсь получить URI, который принимает только SSLv3. Если я попытаюсь получить к нему доступ с помощью запросов curl или Python (которые используют модуль ssl), это не сработает (разные ошибки).

Некоторое более длинное объяснение

Вот этот API, у которого есть этот URI: https://api.mercadolibre.com/sites/MLA/search?q=ipod

  1. Если я попытаюсь получить доступ к этому URI в браузере, он будет работать нормально (Chrome и FF).

  2. Если я попытаюсь скрутить его: 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
    ---
    

Как такое может быть, что браузер подключает Ok, а curl и Python - нет? Как мне это исправить? Это вообще моя проблема (или владелец API)?

Информация о моей системе

На тот момент, когда был задан этот вопрос, данный сайт поддерживал только небольшой набор очень слабых наборов шифров и очень слабая совместимость с современными пользовательскими агентами. Таким образом, для большинства браузеров или даже роботов было невозможно установить соединение, не говоря уже о безопасном.

С тех пор сайт был (в основном) исправлен; хотя у него все еще есть слабые наборы шифров и другие проблемы, он должен, по крайней мере, быть функциональным.