Rotinas SSL: SSL23_WRITE: falha de handshake ssl

29

Estou tentando usar o OpenSSL para se conectar a um servidor SSL.

Quando eu corro:

openssl s_client -connect myhost.com:443

As seguintes configurações de cliente SSL funcionam bem:

  • Windows ( OpenSSL 0.9.83e 23 Feb 2007 )
  • Linux ( OpenSSL 0.9.8o 01 Jun 2010 )
  • Linux ( OpenSSL 1.0.0-fips 29 Mar 2010 )

A saída de qualquer conexão bem-sucedida é assim:

New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DES-CBC3-SHA
    Session-ID: (hidden)
    Session-ID-ctx:
    Master-Key: (hidden)
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1337266099
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)

No entanto, quando eu uso o cliente com meu Ubuntu 12.04 (com OpenSSL 1.0.1 14 Mar 2012 ), recebo um erro:

CONNECTED(00000003)
...:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177:

Como posso continuar resolvendo isso?

Todas as dicas são muito apreciadas!

    
por Jaakko 15.05.2012 / 12:46

3 respostas

26

Este parece ser um problema conhecido com o OpenSSL 1.0.1 do Ubuntu: link

Não parece que uma correção esteja disponível. Se possível, você poderia fazer o downgrade para 1.0.0.

Experimente openssl s_client -tls1 -connect myhost.com:443

    
por 17.05.2012 / 17:11
4

Esse erro pode ser causado por uma versão mais antiga do openssl quando ele não pode renegociar a cifra (gerei um certificado autoassinado usando curvas elípticas).

Especificamente, eu estava recebendo o mesmo erro no MacOS com o padrão openssl - 0.9.8zh

Depois de instalar a versão brew OpenSSL 1.0.2f, o erro desapareceu:

~/bin/openssl s_client -connect localhost:45678 | grep Cipher

verify return:1
New, TLSv1/SSLv3, Cipher is ECDHE-ECDSA-AES256-GCM-SHA384
    Cipher    : ECDHE-ECDSA-AES256-GCM-SHA384
    
por 08.06.2016 / 21:57
2

Se você obtiver esse problema com um servidor Java HTTPS em execução no OpenJDK, tente editar /etc/java-7-openjdk/security/java.security e comentar a linha

security.provider.10=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg

como foi descoberto por Christoph W .

    
por 19.06.2014 / 10:57