web-dev-qa-db-fra.com

Routines SSL: SSL23_WRITE: échec de l'établissement de liaison SSL

J'essaie d'utiliser OpenSSL pour me connecter à un serveur SSL.

Quand je cours:

openssl s_client -connect myhost.com:443

Les configurations client SSL suivantes fonctionnent très bien:

  • Les fenêtres (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 sortie de toute connexion réussie ressemble à ceci:

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)

Cependant, lorsque j'utilise le client avec mon Ubuntu 12.04 (w/OpenSSL 1.0.1 14 Mar 2012) J'obtiens une erreur:

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

Comment puis-je procéder pour résoudre ce problème?

Tous les conseils sont très appréciés!

32
Jaakko

Cela semble être un problème connu avec OpenSSL 1.0.1 d'Ubuntu: https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371

Il ne semble pas qu'un correctif soit disponible. Si possible, vous pouvez revenir à 1.0.0.

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

29
brent

Cette erreur peut être causée par une ancienne version de openssl lorsqu'elle ne peut pas renégocier le chiffrement (j'ai généré un certificat auto-signé à l'aide de courbes elliptiques).

Plus précisément, j'obtenais la même erreur sur MacOS avec openssl par défaut - 0.9.8zh

Après l'installation de la version d'infusion OpenSSL 1.0.2f, l'erreur a disparu:

~/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
4
Andrei Sura

Si vous rencontrez ce problème avec un serveur Java HTTPS exécuté sur OpenJDK, essayez de modifier /etc/Java-7-openjdk/security/Java.security et commentant la ligne

security.provider.10=Sun.security.pkcs11.SunPKCS11 ${Java.home}/lib/security/nss.cfg

comme découvert par Christoph W .

2
Aldaviva