GNU/Linux >> Linux Esercitazione >  >> Linux

Utilizzo di openssl per ottenere il certificato da un server

Anche se sono d'accordo con la risposta di Ari (e l'ho votata positivamente :), avevo bisogno di fare un ulteriore passaggio per farlo funzionare con Java su Windows (dove doveva essere distribuito):

openssl s_client -showcerts -connect www.example.com:443 < /dev/null | openssl x509 -outform DER > derp.der

Prima di aggiungere il openssl x509 -outform DER conversione, ricevevo un errore da keytool su Windows che si lamentava del formato del certificato. L'importazione del file .der ha funzionato correttamente.


Si scopre che qui c'è più complessità:avevo bisogno di fornire molti più dettagli per farlo funzionare. Penso che abbia qualcosa a che fare con il fatto che si tratta di una connessione che richiede l'autenticazione del client e l'hankshake aveva bisogno di più informazioni per continuare fino alla fase in cui i certificati sono stati scaricati.

Ecco il mio comando funzionante:

openssl s_client -connect host:port -key our_private_key.pem -showcerts \
                 -cert our_server-signed_cert.pem

Spero che questa sia una spinta nella giusta direzione per chiunque abbia bisogno di qualche informazione in più.


Un one-liner per estrarre il certificato da un server remoto in formato PEM, questa volta usando sed :

openssl s_client -connect www.google.com:443 2>/dev/null </dev/null |  sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'

Con SNI

Se il server remoto utilizza SNI (ovvero condivide più host SSL su un singolo indirizzo IP) dovrai inviare il nome host corretto per ottenere il certificato corretto.

openssl s_client -showcerts -servername www.example.com -connect www.example.com:443 </dev/null

Senza SNI

Se il server remoto non utilizza SNI, puoi saltare -servername parametro:

openssl s_client -showcerts -connect www.example.com:443 </dev/null


Per visualizzare tutti i dettagli del certificato di un sito puoi utilizzare anche questa catena di comandi:

$ echo | \
    openssl s_client -servername www.example.com -connect www.example.com:443 2>/dev/null | \
    openssl x509 -text

Linux
  1. Utilizzo di Stratis per gestire l'archiviazione Linux dalla riga di comando

  2. Errore OpenCA Impossibile caricare il certificato dal database

  3. Connettiti a Linux da Mac OS X usando Terminal

  4. Connettiti a Linux da Windows usando PuTTY

  5. Utilizzo dei registri del server

Come installare l'ultima versione di OpenSSL da Source su Linux

Conosci il tuo sistema (usando la riga di comando)

Come generare certificati SSL autofirmati utilizzando OpenSSL

Come ottenere le migliori prestazioni dal server Nginx

RabbitMQ - Ottieni messaggi da una coda usando curl

Come posso ottenere messaggi di registro dal server LAMP su Ubuntu 10.04?