ошибка openssl / curl: SSL23_GET_SERVER_HELLO: внутренняя ошибка оповещения tlsv1

9

Мы сталкиваемся с очень странными проблемами, связанными с openssl или curl на одном из наших серверов, начиная с Ubuntu 14.04.

Выполнение:

openssl s_client -connect ms.icometrix.com:443

дает:

CONNECTED(00000003)
140557262718624:error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert
internal error:s23_clnt.c:770:

Аналогичная ошибка при выполнении:

curl https://ms.icometrix.com
curl: (35) error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert
internal error

Вывод версии openssl (на клиент / сервер):

OpenSSL 1.0.1f 6 Jan 2014

Вывод openssl из dpkg -l openssl:

1.0.1f-1ubuntu2

Самое смешное, что проблема исчезает при соединении с другими версиями Openssl:

  • С Mac, OpenSSL 0.9.8zd 8 января 2015, все в порядке
  • Из centos, OpenSSL 1.0.1e-fips 11 февраля 2013, все в порядке
  • Последняя стабильная версия на Ubuntu 14.04, OpenSSL 1.0.2d 9 июля 2015, все в порядке.

Со стороны сервера мы не видим ничего странного. Проблема началась, когда мы отключили SSL3 на наших машинах.

Может ли быть проблема со сборкой в ​​apt-get?

Мы также тестируем другие версии, предложенные apt-cache showpkg, но проблема остается ...

cecemel
источник
Похоже, что вы пострадали от этой ошибки: bugs.launchpad.net/ubuntu/+source/openssl/+bug/861137 . Некоторые обходные пути упоминаются. Работает ли curl --sslv3 https://ms.icometrix.com?
Йос
Привет, спасибо за ответ. Нет, это не работает, потому что мы отключили ssl на наших серверах. Более того, на самом деле нам нет дела до curl или openssl, реальная проблема для нас в том, что мы используем запросы от python, который использует эту версию openssl. Так что если у вас есть какие-либо идеи, спасибо, что сообщили. Я буду копать дальше.
cecemel

Ответы:

4

Это похоже на проблему с поддержкой ECDH между клиентом и сервером. Если вы исключите все шифры ECDH, это сработает:

openssl s_client -connect ms.icometrix.com:443 -cipher 'DEFAULT:!ECDH'

Я предполагаю, что сервер квакает на некоторых из 25 кривых ECC, предлагаемых клиентом. Браузеры предлагают только несколько кривых. OpenSSL 0.9.8 пока не поддерживает ECC, а RedHat / CentOS имеет историю отключения ECC по умолчанию по патентным причинам. Я не знаю, почему OpenSSL 1.0.2 работает, так как у меня нет доступа к этой версии.

Обратите внимание, что предоставления версии OpenSSL обычно недостаточно, поскольку все дистрибутивы сохраняют более старые версии, но добавляют исправления безопасности. Вместо этого проверьте с помощью dpkg -l opensslкоторого в моей системе будет 1.0.1f-1ubuntu2.15.

Штеффен Ульрих
источник
THX это сделал свое дело! Я обновил пост с выводом из dpkg -l
cecemel