Мы сталкиваемся с очень странными проблемами, связанными с 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, но проблема остается ...
curl --sslv3 https://ms.icometrix.com
?Ответы:
Это похоже на проблему с поддержкой ECDH между клиентом и сервером. Если вы исключите все шифры ECDH, это сработает:
Я предполагаю, что сервер квакает на некоторых из 25 кривых ECC, предлагаемых клиентом. Браузеры предлагают только несколько кривых. OpenSSL 0.9.8 пока не поддерживает ECC, а RedHat / CentOS имеет историю отключения ECC по умолчанию по патентным причинам. Я не знаю, почему OpenSSL 1.0.2 работает, так как у меня нет доступа к этой версии.
Обратите внимание, что предоставления версии OpenSSL обычно недостаточно, поскольку все дистрибутивы сохраняют более старые версии, но добавляют исправления безопасности. Вместо этого проверьте с помощью
dpkg -l openssl
которого в моей системе будет 1.0.1f-1ubuntu2.15.источник