błąd openssl / curl: SSL23_GET_SERVER_HELLO: błąd wewnętrzny alertu tlsv1

9

Mamy bardzo dziwne problemy z połączeniem się z openssl lub curl z jednym z naszych serwerów, od Ubuntu 14.04

Wykonywanie:

openssl s_client -connect ms.icometrix.com:443

daje:

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

Podobny błąd podczas wykonywania:

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

Dane wyjściowe wersji openssl (na kliencie / serwerze):

OpenSSL 1.0.1f 6 Jan 2014

Dane wyjściowe openssl z dpkg -l openssl:

1.0.1f-1ubuntu2

Zabawne jest to, że problem znika podczas łączenia się z innymi wersjami openssl:

  • Z komputera Mac, OpenSSL 0.9.8zd 8 stycznia 2015 r., Wszystko w porządku
  • Z centos, OpenSSL 1.0.1e-fips 11 lutego 2013, wszystko w porządku
  • Najnowsza stabilna wersja na Ubuntu 14.04, OpenSSL 1.0.2d 9 lipca 2015, wszystko w porządku.

Po stronie serwera nie widzimy nic dziwnego. Problem zaczął się, gdy wyłączyliśmy SSL3 na naszych komputerach.

Czy może występować problem z kompilacją w apt-get?

Testujemy również inne wersje, proponowane przez apt-cache showpkg, ale problem pozostaje ...

Cecemel
źródło
Wygląda na to, że zostałeś dotknięty tym błędem: bugs.launchpad.net/ubuntu/+source/openssl/+bug/861137 . Wymieniono niektóre obejścia. Czy curl --sslv3 https://ms.icometrix.comdziała
Jos
Cześć, dzięki za odpowiedź. Nie, to nie działa, ponieważ wyłączyliśmy ssl na naszych serwerach. Co więcej, tak naprawdę nie dbamy o curl lub openssl, prawdziwy problem dla nas polega na tym, że korzystamy z zapytań Pythona, który korzysta z tej wersji openssl. Jeśli masz jakieś pomysły, dziękuję za informację. Będę kopać dalej.
cecemel,

Odpowiedzi:

4

Wygląda to na problem z obsługą ECDH między klientem a serwerem. Jeśli wykluczysz wszystkie szyfry ECDH, zadziała:

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

Domyślam się, że serwer wykrzykuje niektóre z 25 krzywych ECC oferowanych przez klienta. Przeglądarki oferują tylko kilka krzywych. OpenSSL 0.9.8 nie obsługuje jeszcze żadnych ECC, a RedHat / CentOS ma historię domyślnego wyłączania ECC z powodów patentowych. Nie wiem, dlaczego OpenSSL 1.0.2 działa, ponieważ nie mam dostępu do tej wersji.

Należy pamiętać, że podanie wersji OpenSSL zwykle nie wystarcza, ponieważ wszystkie dystrybucje zachowują starsze wersje, ale dodają łaty bezpieczeństwa. Zamiast tego sprawdź, dpkg -l opensslco daje 1.0.1f-1ubuntu2.15 w moim systemie.

Steffen Ullrich
źródło
dzięki, udało się! Zaktualizowałem post o dane wyjściowe z dpkg -l
cecemel