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:
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.