SSL/TLS da command line

8Spesso potrebbe tornare utile effettuare dei test delle connessioni SSL/TLS da linea di comando *NIX senza scomodare un browser o un client del protocollo che si vuole verificare.

Di seguito alcuni esempi di come effettuare queste verifiche.

SSLv2 e SSLv3

SSLv2 risale al 1995 (la versione 1 non è mai stata rilasciata) e l’anno successivo è stata sostituita dalla versione 3 per problemi di sicurezza. Anche SSLv3 è risultato vulnerabile ed è meglio disabilitarlo. Nonostante ciò ci sono molti host che supportano ancora questi protocolli. Per verificare se un host supporta ancora SSLv2 o SSLv3 si forza l’utilizzo di quei protocolli in una connessione https in questo modo:

openssl s_client -ssl2 -connect siamogeek.com:443
openssl s_client -ssl3 -connect siamogeek.com:443

Se la connessione va a buon fine significa che il server accetta ancora quel protocollo, altrimenti si riceve un errore di handshake.

Protocolli di cifratura

I protocolli di cifratura utilizzati sono molto importanti perché se viene forzato un protocollo vulnerabile durante l’handshake, tutta la connessione risulterà poco sicura.

Per elencare i protocolli di cifratura utilizzati da un server si utilizza nmap:

nmap --script ssl-enum-ciphers -p 443 siamogeek.com

L’output di questo script elenca tutti i protocolli supportati per ognuno dei tipi di handshake SSL/TLS.

Certificato

Per vedere i dettagli del certificato SSL di un server si utilizza questo comando:

openssl s_client -showcerts -connect siamogeek.com:443 </dev/null | openssl x509 -noout -text

che visualizza il certificato in formato testuale leggibile.

Rinegoziazione sicura

Lo standard TLS prevede un nuovo handshake durante una sessione TLS. Questo è un comportamento tipico di Internet Information Server, che usa la rinegoziazione quando capisce quale dei siti (terminologia IIS per indicare gli host virtuali) deve essere servito al client.

Una vulnerabilità del protocollo è stata scoperta nel 2009, per verificare se un server è affetto da questo problema utilizzare questo comando

openssl s_client -connect siamogeek.com:443 < /dev/null

Nell’output ad un certo punto dovrebbe comparire la scritta

Secure Renegotiation IS supported

se invece compare la scritta

Secure Renegotiation IS NOT supported

significa che il server non è stato aggiornato ed è vulnerabile.

Autore: Luigi Rosa

Consulente IT, sviluppatore, SysAdmin, cazzaro, e, ovviamente, geek.

Un pensiero riguardo “SSL/TLS da command line”

Spazio per un commento