Come usare OpenSSL S_Client

Come usare OpenSSL S_Client
Se sei responsabile del mantenimento delle applicazioni protette da TLS, è necessario sapere come utilizzare OpenSSL S_Client. Molti server e applicazioni Web si basano su OpenSSL, una libreria crittografica, per offrire loro una protezione crittografica per garantire la loro comunicazione su Internet.

OpenSSL funziona con i protocolli SSL e TLS. Copriremo i diversi modi su come utilizzare OpenSSL S_Client per testare e verificare le connessioni SSL.

Esempi di utilizzo OpenSSL S_Client

Il toolkit OpenSSL offre molte opzioni che puoi specificare per raggiungere obiettivi diversi.

1. Testare la connessione

Per testare la connettività del servizio HTTPS e visualizzare le informazioni diagnostiche relative alla connessione SSL a un determinato server che include informazioni come la catena di certificati, è necessario utilizzare il -Collegare bandiera.

$ openssl s_client - connetti [yourdomain].com: 443

Stiamo usando la porta 443 come è preferito per HTTP sicuro su TLS/SSL. L'output del comando visualizza i dettagli di base sulla connessione che si sta stabilendo con il server.

Ad esempio, useremo Kyle.com come server.

2. Stampa tutti i certificati

Il servizio SSL presenta catene di certificate e puoi visualizzarle tutte, il che è utile quando è necessario risolvere i problemi di certificazione come i certificati di errori di ordine.

$ openssl s_client -connect kyle.com: 443 -Showcerts

L'output mostrerà i diversi certificati come riflessi nella seguente immagine:

È possibile ispezionare manualmente ciascuno dei certificati restituiti dal server dall'output.

3. Controllare la validità del certificato

Una volta restituita la catena di certificati dal server, puoi testare quanto sono validi.

$ openssl s_client -connect kyle.com: 443 -brief

Per confermare la validità, cerca il Verifica, e il suo output dovrebbe leggere "OK".

IL -breve Il flag aiuta a restringere l'output escludendo alcuni dettagli verbosi.

Nel nostro caso, confermiamo che i nostri certificati sono validi.

4. Controllare le date di scadenza del certificato

Utilizzando OpenSSL S_Client, è possibile verificare le date di scadenza del certificato del sito Web dalla riga di comando. Qui, dovrai combinare due comandi come di seguito:

$ openssl s_client -connect kyle.com: 443 2> /dev /null | OpenSSL X509 -Noout -Dates

IL -noout Il flag sopprime il comando dalla visualizzazione del certificato codificato.


L'output mostra l'intervallo quando i certificati scadranno. Come amministratore di sistema, tali dettagli sono fondamentali come si sa quando è necessario ottenere un nuovo certificato.

5. Verifica la connessione SSL

Per controllare lo stato della connessione SSL al server, utilizzare il -Verify_return_error bandiera.

$ openssl s_client -verify_return_error -connect kyle.com: 443

Se la connessione ha esito positivo, la stretta di mano passerà. Ma se vedi errori, significa che la stretta di mano SSL non è riuscita e non è possibile stabilire alcuna connessione.

6. Visualizza l'impronta digitale per il certificato SSL

I certificati SSL hanno un'impronta digitale. È possibile ottenere l'impronta digitale di un certificato come mostrato nel seguente:

$ openssl s_client -connect kyle.com: 443 2> /dev /null | OpenSSL X509 -Noout -fingerprint

7. Specificare la cifra

È possibile specificare quale cifera o tipo di crittografia utilizzato per il certificato utilizzando il -cifra bandiera. Ad esempio, possiamo specificare per utilizzare il DHE-PSK-AES128-CBC-SHA. In tal modo, il lato client dovrà utilizzare la suite cifera specificata per la connessione.

$ openssl s_client -connect kyle.com: 443 -cipher dhe-psk-aes128-cbc-sha

È possibile visualizzare l'elenco delle cifre disponibili utilizzando il seguente comando:

$ OpenSSL Cifrers

L'output dovrebbe apparire simile alla seguente immagine:

8. Specificare la versione SSL/TLS e le cifre da utilizzare

Il S_Client, per impostazione predefinita, negozia quale versione del protocollo da utilizzare SSL/TL. Tuttavia, è possibile specificare quali versioni utilizzare utilizzando una delle seguenti opzioni:

  1. -SSL2: SSL versione 2
  2. -SSL3: SSL versione 3
  3. -TLS1: TLS versione 1.0
  4. -tls1_1: TLS versione 1.1
  5. -tls1_2: TLS versione 1.2

Inoltre, prima di specificare quali cifre utilizzare, è possibile controllare prima le versioni supportate. Nel seguente esempio, controlleremo il tls1_3 versioni.

Il comando è il seguente:

$ OpenSSL Ciphers -s -tls1_3

Le cifre supportate sono:

Se si desidera specificare una data versione SSL/TLS per la connessione, è necessario aggiungerla solo quando si testa la connessione, come nel caso seguente:

$ openssl s_client -connect kyle.com: 443 -tls1_3

Se non vuoi usare una data versione, prepara a NO_ al nome. Un esempio di disabilitazione tls1_1 sarebbe No_tls1_1. In tal caso, verranno utilizzate le altre versioni di protocollo.

9. Invia messaggio specifico per il protocollo

OpenSSL supporta diversi protocolli, come FTP, IRC, SMTP, LDAP, POP3, IMAP, ecc. Quando è necessario testare la connessione utilizzando un protocollo specifico o specificare quale protocollo utilizzare per la comunicazione, è possibile utilizzare il -starttls bandiera.

Ad esempio, per testare il certificato HFTP, utilizzare il comando seguente:

$ openssl s_client -connect kyle.com: 443 -Starttls ftp -servername kyle.com

10. Verifica il nome host

Per verificare il nome host, utilizzare il -Verify_hostname. Se il nome host non corrisponde, riceverai un messaggio di errore di verifica come quello sotto:

In tal caso, è necessario ottenere un certificato con una SAN o CN che corrisponde al tuo dominio.

Conclusione

Il toolkit OpenSSL ha infinite opzioni che puoi utilizzare per soddisfare le tue esigenze. Abbiamo coperto quelli comuni, ma la pagina principale è la tua migliore risorsa se devi esplorare di più. L'apprendimento di OpenSSL renderà la tua vita più semplice quando si tratta di server e connessioni per eventuali attività di amministrazione di sistema. Pertanto, fai un punto per praticare il comando.