
Strumento open source per aiutarti a costruire una catena di certificati SSL valida.
Descrizione • Come Usare • Parametri • Come Funziona • Requisiti • Altro • Licenza
È uno strumento open source per aiutarti a costruire una catena di certificati SSL valida. Può anche aiutarti a correggere la catena incompleta e scaricare tutti i certificati CA mancanti. Puoi anche scaricare tutti i certificati da un server remoto e ottenere la catena di certificati corretta.
È semplice:
# Clona questo repository
git clone https://github.com/trimstray/mkchain
# Entra nel repository
cd mkchain
# Installa
./setup.sh install
# Esegui l'app
mkchain -i /data/certs -o /data/chain.crt
- il collegamento simbolico a
bin/mkchainè posto in/usr/local/bin- la pagina man è posta in
/usr/local/man/man8
Fornisce le seguenti opzioni:
Usage:
mkchain <option|long-option>
Examples:
mkchain --in Root.crt --in Intermediate1.crt --in Server.crt --out bundle_chain_certs.crt
mkchain --in /tmp/certs --out bundle_chain_certs.crt --with-root
mkchain -i Server.crt -o bundle_chain_certs.crt
mkchain -i https://incomplete-chain.badssl.com/ --with-root
Options:
--help mostra questo messaggio
--debug visualizza informazioni sullo schermo (modalità debug)
-i, --in aggiungi certificati da unire (file, file multipli, directory con certificati SSL
o dominio remoto)
-o, --out salva il risultato (catena) in un file
--with-root aggiungi il certificato radice alla catena di certificati
-o|--out- senza questo parametromkchainsalva la catena di output nella directorymkchain/chains/.
Prima di leggere, consulta l'articolo su Catena di Certificati SSL.
Iniziamo con la catena di certificati ssllabs. Sono forniti insieme a mkchain e si trovano nella directory example/ssllabs.com che contiene inoltre la directory all (contenente tutti i certificati necessari per assemblare la catena) e la directory server_certificate (contenente solo il certificato del server).
La catena corretta per il dominio ssllabs.com (risultato del comando openssl):
Certificate chain
0 s:/C=US/ST=California/L=Redwood City/O=Qualys, Inc./CN=ssllabs.com
i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
1 s:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2009 Entrust, Inc. - for authorized use only/CN=Entrust Root Certification Authority - G2
2 s:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2009 Entrust, Inc. - for authorized use only/CN=Entrust Root Certification Authority - G2
i:/C=US/O=Entrust, Inc./OU=www.entrust.net/CPS is incorporated by reference/OU=(c) 2006 Entrust, Inc./CN=Entrust Root Certification Authority
Il codice sopra presenta una catena completa composta da:
Certificato di Identità (Certificato del Server)
emesso per ssllabs.com da Entrust Certification Authority - L1K
Certificato Intermedio
emesso per Entrust Certification Authority - L1K da Entrust Root Certification Authority - G2
Certificato Intermedio
emesso per Entrust Root Certification Authority - G2 da Entrust Root Certification Authority
Certificato Radice (Certificato Autofirmato)
emesso per Entrust Root Certification Authority da Entrust Root Certification Authority
In questo scenario, colleghiamo a catena tutti i certificati forniti. Esempio di esecuzione dello strumento:
In questo scenario, utilizziamo solo il certificato del server e lo usiamo per recuperare i restanti certificati necessari. Poi, come sopra, combiniamo tutti i certificati forniti. Esempio di esecuzione dello strumento:
Per creare una catena valida, devi fornire allo strumento tutti i certificati necessari (se imposti una directory per il parametro -i|--in). Questi saranno:
Questo è molto importante perché senza di essi non sarai in grado di determinare l'inizio e la fine della catena.
Se imposti solo un file di certificato come valore di
-i|--in,mkchainscarica automaticamente tutti i certificati necessari.
Tuttavia, se guardi all'interno della catena generata dopo la generazione con mkchain, non troverai il certificato radice.
Perché? Perché i certificati radice autofirmati non devono/non dovrebbero essere inclusi nella configurazione del server web. Non servono a nulla (i client li ignoreranno sempre) e causano un leggero calo di prestazioni (latenza) perché aumentano le dimensioni dell'handshake SSL.
Se vuoi aggiungere un certificato radice alla catena di certificati, chiama l'utility con il parametro --with-root.
mkchain permette l'utilizzo di due percorsi di certificazione:
Durante la generazione della catena di certificati, mkchain visualizza commenti con informazioni sui certificati, inclusi eventuali errori.
Ecco l'elenco di tutte le possibilità:
Il messaggio viene visualizzato in assenza di un certificato del server che è l'inizio della catena. Questo è un caso unico perché in questa situazione mkchain termina la sua operazione mostrando solo queste informazioni. Il certificato del server è l'unico certificato necessario per creare correttamente una catena. Senza questo certificato, la catena corretta non verrà creata.
La situazione opposta qui: messaggio visualizzato quando viene trovato un certificato del server valido.