erro openssl / curl: erro SSL23_GET_SERVER_HELLO: tlsv1 alerta interno

9

Encontramos problemas muito estranhos ao conectar com openssl ou curl a um de nossos servidores, a partir do Ubuntu 14.04

Executando:

openssl s_client -connect ms.icometrix.com:443

dá:

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

Um erro semelhante ao executar:

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

Saída da versão openssl (no cliente / servidor):

OpenSSL 1.0.1f 6 Jan 2014

Saída de openssl do dpkg -l openssl:

1.0.1f-1ubuntu2

O engraçado é que o problema desaparece ao se conectar com outras versões do Openssl:

  • De um mac, OpenSSL 0.9.8zd 8 de janeiro de 2015, tudo ok
  • De centos, OpenSSL 1.0.1e-fips 11 de fevereiro de 2013, tudo ok
  • Última versão estável no Ubuntu 14.04, OpenSSL 1.0.2d 9 de julho de 2015, tudo ok.

Do lado do servidor, não vemos nada de estranho. O problema começou quando desativamos o SSL3 em nossas máquinas.

Pode haver um problema com a compilação no apt-get?

Também testamos outras versões, a proposta pelo apt-cache showpkg, mas o problema permanece ...

cecemel
fonte
Parece que você foi atingido por este bug: bugs.launchpad.net/ubuntu/+source/openssl/+bug/861137 . Algumas soluções alternativas são mencionadas. Funciona curl --sslv3 https://ms.icometrix.com?
217 Jos
Oi, obrigado pela resposta. Não, isso não funciona, porque desativamos o ssl em nossos servidores. Além disso, na verdade, não nos preocupamos com curl ou openssl, o verdadeiro problema para nós é que usamos as solicitações do python, que usa esta versão do openssl. Então, se você tiver alguma idéia, obrigado por nos informar. Eu vou cavar mais.
Cecemel

Respostas:

4

Isso parece um problema com o suporte ECDH entre cliente e servidor. Se você excluir todas as cifras de ECDH, ele funcionará:

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

Meu palpite é que o servidor resmunga algumas das 25 curvas de ECC oferecidas pelo cliente. Os navegadores oferecem apenas algumas curvas. O OpenSSL 0.9.8 ainda não suporta nenhum ECC e o RedHat / CentOS possui um histórico de desativação do ECC por padrão por motivos de patente. Não sei por que o OpenSSL 1.0.2 funciona, pois não tenho acesso a esta versão.

Observe que fornecer a versão OpenSSL geralmente não é suficiente, porque todas as distribuições mantêm versões mais antigas, mas adicionam patches de segurança. Em vez disso, verifique com o dpkg -l opensslque dá 1.0.1f-1ubuntu2.15 no meu sistema.

Steffen Ullrich
fonte
thx fez o truque! Atualizei o post com saída do dpkg -l
cecemel