Rutinas SSL: SSL23_WRITE: error de protocolo de enlace SSL

32

Estoy tratando de usar OpenSSL para conectarme a un servidor SSL.

Cuando corro:

openssl s_client -connect myhost.com:443

Las siguientes configuraciones de cliente SSL funcionan bien:

  • 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)

La salida de cualquier conexión exitosa se ve así:

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)

Sin embargo, cuando uso el cliente con mi Ubuntu 12.04 (w / OpenSSL 1.0.1 14 Mar 2012) me sale un error:

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

¿Cómo puedo proceder para resolver esto?

Todos los consejos son muy apreciados!

Jaakko
fuente
¿Qué protocolo y cifrado se utilizan cuando se conecta desde Windows?
Shane Madden
Dice: New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA. ¡Ojalá entendiera lo que todo esto significa! :)
Jaakko
DES? Esa es una cifra extraña para tener la más alta prioridad. ¿A qué tipo de servidor te estás conectando?
Shane Madden
1
¿Quizás los valores predeterminados en el openssl más nuevo restringen por defecto las versiones anteriores del protocolo SSL? Habría algunas razones para hacerlo dado el reciente desastre de BEAST ...
rackandboneman
1
D'oh, entendido. Estás probando a los clientes contra tu sitio.
brent

Respuestas:

28

Esto parece ser un problema conocido con OpenSSL 1.0.1 de Ubuntu: https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371

No parece que haya una solución disponible. Si es posible, podría bajar a 1.0.0.

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

brent
fuente
Más detalles del problema en el ticket de Debian: bugs.debian.org/cgi-bin/bugreport.cgi?bug=665452
brent
PD: Te daré la recompensa cuando expire (19 horas)
Jaakko
1
Suena bien :) Información final, boleto ascendente con OpenSSL que parece ser la causa principal del problema: rt.openssl.org/Ticket/…
brent
¡Gracias! Esta respuesta también funciona para OpenSSL 0.9.8zh 14 de enero de 2016 en Mac
tytk
4

Este error puede ser causado por una versión anterior de openssl cuando no puede renegociar el cifrado (generé un certificado autofirmado usando curvas elípticas).

Específicamente, recibí el mismo error en MacOS con openssl predeterminado - 0.9.8zh

Después de instalar la versión de preparación OpenSSL 1.0.2f, el error desapareció:

~/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
Andrei Sura
fuente
después de hacer una instalación de preparación, mi versión de openssl en / usr / bin / openssl era la versión anterior. Tuve que ir específicamente a /usr/local/Cellar/openssl/1.0.2o_2/bin para ejecutar la última versión de openssl
Gopi Palamalai
2

Si tiene este problema con un servidor HTTPS de Java que se ejecuta en OpenJDK, intente editar /etc/java-7-openjdk/security/java.securityy comentar la línea

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

como descubrió Christoph W .

Aldaviva
fuente