SSL negoziare un protocollo troppo basso?

3

Sto provando a diagnosticare un potenziale problema SSL / TLS tra un client Mac e un server Windows. Ho generato il mio certificato di root e firmato un certificato per il server, e ho installato il certificato di root sul client Mac. Quando provo a connettermi al server da mac come questo

echo quit | openssl s_client -connect newmail.example.com:443 -CAfile ~/Downloads/myroot.cer 

Vedo questi risultati

---
SSL handshake has read 1365 bytes and written 456 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
    Session-ID: DE2800000D2050CAB6CEE9136CD377998559C46C7AD57A1062907EE417457DE0
    Session-ID-ctx: 
    Master-Key: 24E2BE661880D703B7033E0F723323296C26ECEDA0BA79493AE134C7F03EEBD765692C9DF10933BE213FF4E0F89771AC
    Key-Arg   : None
    Start Time: 1458249776
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
DONE

Questi risultati indicano che il livello più alto del protocollo negoziato è TLSv1? (Che sospetto causi il problema con la mia app)? Non dovrebbe essere questo TLS 1.2?

    
posta TSG 17.03.2016 - 22:29
fonte

1 risposta

5

La versione del protocollo è il risultato di una negoziazione tra client e server. Il client invia, in ClientHello , la versione massima che supporta; quindi il server risponde con la versione che verrà utilizzata. Normalmente, il server seleziona la versione di protocollo più alta che supporta e non è superiore alla versione massima pubblicizzata del client.

Qui, con lo strumento da riga di comando openssl come client, hai ottenuto TLS 1.0. Quindi il client (qui, OpenSSL) o il server conosce solo TLS 1.0 e non 1.2.

Lo strumento /usr/bin/openssl fornito con OS X è piuttosto vecchio; su un'installazione aggiornata di OS X (El Capitan), è OpenSSL-0.9.8zg - questo è un OpenSSL antico con correzioni di bug, ma nessun supporto per funzionalità aggiunte nelle versioni di OpenSSL-1. *. In particolare, nessun TLS 1.1 o 1.2. Il che spiega che con OpenSSL ottieni solo 1.0.

(OS X non aggiorna OpenSSL alle versioni più recenti perché gli sviluppatori di OpenSSL hanno rotto la compatibilità con le versioni precedenti nell'API, quindi la modifica della versione della libreria potrebbe interrompere le applicazioni esistenti di terze parti che lo utilizzano.)

Per approfondire il tuo problema , ti suggerisco quanto segue:

  • Prova un nuovo client openssl . Potresti usare MacPorts (ad esempio) per installare in modo ragionevolmente semplice tale software opensource.

  • Potresti voler testare il tuo server con uno degli strumenti dedicati a tale scopo. Se il tuo server è raggiungibile da Internet, Qualys SSL Labs è il solito metodo. Per i server su reti private, ci sono anche strumenti da riga di comando come testssl.sh o TestSSLServer che può darti qualche informazione.

  • È necessario osservare un tentativo di handshake SSL con un'applicazione di monitoraggio della rete (ad esempio Network Monitor sul server Windows o Wireshark ). Questo rivelerà se il client tenta di avviare un handshake a tutti, quali versioni / suite di crittografia invia e cosa risponde il server.

    Tale traccia può anche rivelare altre cose, come tentativi falliti di scaricare CRL come parte della convalida del certificato sul lato client.

risposta data 17.03.2016 - 22:48
fonte

Leggi altre domande sui tag