Routine SSL: SSL23_WRITE: errore handshake ssl


32

Sto cercando di utilizzare OpenSSL per connettermi a un server SSL.

Quando corro:

openssl s_client -connect myhost.com:443

Le seguenti configurazioni client SSL funzionano bene:

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

L'output di qualsiasi connessione riuscita è simile al seguente:

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)

Tuttavia, quando uso il client con Ubuntu 12.04 (w / OpenSSL 1.0.1 14 Mar 2012) ottengo un errore:

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

Come posso procedere per risolvere questo?

Tutti i suggerimenti sono molto apprezzati!


Quale protocollo e cifratura vengono utilizzati quando si connette da Windows?
Shane Madden

Dice: New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA. Vorrei aver capito cosa significa tutto questo! :)
Jaakko,

DES? È una cifra strana per avere la massima priorità. A quale tipo di server ti stai connettendo?
Shane Madden

1
Forse le impostazioni predefinite sul nuovissimo openssl stanno di default limitando le versioni precedenti del protocollo ssl? Ci sarebbero alcuni motivi per farlo dato il recente pasticcio di BEAST ...
Rackandboneman,

1
D'oh, capito. Stai testando i clienti sul tuo sito.
brent

Risposte:


28

Questo sembra essere un problema noto con OpenSSL 1.0.1 di Ubuntu: https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371

Non sembra che sia disponibile una correzione. Se possibile, è possibile eseguire il downgrade alla 1.0.0.

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


Maggiori dettagli sul problema sul biglietto Debian: bugs.debian.org/cgi-bin/bugreport.cgi?bug=665452
brent

PS Ti darò la grazia quando scadrà (19 ore)
Jaakko,

1
Sembra buono :) Ultimo pezzo di informazione, biglietto a monte con OpenSSL che sembra essere la causa principale del problema: rt.openssl.org/Ticket/…
brent

Grazie! Questa risposta funziona anche per OpenSSL 0.9.8zh 14 gennaio 2016 su Mac
tytk,

4

Questo errore può essere causato da una versione precedente di openssl quando non è possibile rinegoziare la cifra (ho generato un certificato autofirmato utilizzando curve ellittiche).

In particolare, stavo ottenendo lo stesso errore su MacOS con openssl predefinito - 0.9.8zh

Dopo aver installato la versione brew OpenSSL 1.0.2f l'errore è andato via:

~/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

dopo aver fatto una brew install, la mia versione di openssl in / usr / bin / openssl era la vecchia versione. Ho dovuto andare specificamente a /usr/local/Cellar/openssl/1.0.2o_2/bin per eseguire l'ultima versione di openssl
Gopi Palamalai,

2

Se si riscontra questo problema con un server HTTPS Java in esecuzione su OpenJDK, provare a modificare /etc/java-7-openjdk/security/java.securitye commentare la riga

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

come scoperto da Christoph W .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.