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

Включение TLS1.0? Невозможно безопасно обмениваться данными с одноранговым узлом: нет алгоритмов шифрования соединения

Более года я веду веб-сайт, посвященный фотографиям, который позволяет клиентам заказывать распечатки, которые впоследствии выполняются полиграфической компанией. Заказы отправляются в формате XML по указанному URL-адресу. В последнее время заказы не размещаются, и при просмотре журналов сервера я обнаружил следующую ошибку:

 [Mon Dec 01 21:17:38 2014] [error] [client XXX] cURL error: [35] Cannot communicate securely with peer: no common encryption algorithm(s).

Техническая группа полиграфической компании смогла дать мне какое-то направление, но я все еще сбит с толку. Первоначально они сообщили мне, что сервер в настоящее время поддерживает только SSLv2, SSLv3 и TLS1.0, и что вполне вероятно, что на нашей стороне включен только TLS1.2. Они утверждали, что с их стороны ничего не изменилось, и я лично знаю, что на нашей стороне ничего не менялось уже несколько месяцев. Когда я впервые столкнулся с проблемой, я попытался обновить пакеты сервера, но это не помогло решить проблему. Позже я подумал, что, возможно, проблема связана с группами безопасности для инстанса Amazon EC2, но я не совсем уверен. Как мне включить TLS1.0, если он еще не включен? Как мне проверить, какие средства защиты транспортного уровня и уровни защищенных сокетов в настоящее время включены? Есть другие предложения?

Некоторые версии OpenSSL были сломан в Ubuntu из-за проблем в OpenSSL, а не в самом Ubuntu и мог быть сломан и в других дистрибутивах, таких как Amazon Linux, при подключении к древнему серверу, который может работать не лучше, чем TLS 1.0, если вы явно не принудительно его используете, как @AndySmith предлагал выше ( openssl s_client -connect вариант, чтобы попытаться увидеть его работу из командной строки, в этом случае будет -tls1).

Я не вижу этого в вашем вопросе, но предполагаю, что вы используете PHP. Я не эксперт по PHP, но похоже, что ваш обходной путь может заключаться в использовании CURLOPT_SSLVERSION заставить CURL_SSLVERSION_TLSv1_0.

Если ваш поставщик может сделать не лучше, чем TLS 1.0, и (что еще хуже) по-прежнему поддерживает SSLv2 и SSLv3, им действительно должно быть стыдно. Даже документация PHP не рекомендует использовать старые версии:

Лучше всего не устанавливать это и позволить ему использовать значение по умолчанию. Установка значения 2 или 3 очень опасна, учитывая известные уязвимости в SSLv2 и SSLv3.

Однако у меня есть система, которая подключается к древнему оборудованию для балансировки нагрузки, и принудительное использование TLS 1.0 - это именно то, что я должен сделать, чтобы заставить ее работать, даже если она «должна» работать в любом случае ... и она действительно работала нормально, из более старых версий OpenSSL. Обновление безопасности в вашей системе могло привести к изменению поведения, обновив вас до версии OpenSSL с этой проблемой.