
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.
Questo messaggio appare quando il primo dei due certificati intermedi non viene trovato. Questa informazione non specifica esplicitamente l'assenza di un secondo certificato intermedio e d'altra parte permette di determinare se esiste il certificato intermedio a cui è stato firmato il certificato del server. Inoltre, può essere visualizzato se il secondo certificato intermedio è stato fornito.
Simile al precedente, ma riguarda il secondo certificato intermedio. Tuttavia, è possibile creare correttamente la catena utilizzando il secondo percorso di certificazione, ad es. usando il primo certificato intermedio e sostituendo il secondo con il certificato principale.
Questo messaggio significa che uno o tutti i certificati intermedi richiesti sono mancanti e viene visualizzato in assenza del certificato radice.
Questo messaggio indica il numero di certificati intermedi validi.
La mancanza del certificato radice viene trattata come un avviso. Naturalmente, quando si configurano i certificati sul lato server, non è consigliato allegare un certificato radice, ma se lo si crea con mkchain, lo tratta come una catena incompleta mostrando informazioni sulla creazione errata della catena.
Questo messaggio non informa dell'errore, ma dell'assenza del campo CN, cosa che può accadere con alcuni certificati (guarda example/google.com). Il campo Common Name identifica il nome host associato al certificato. Non esiste alcun requisito in RFC3280 che un Issuer DN debba avere un CN. La maggior parte delle CA include un CN nell'Issuer DN, ma alcune no, come questa CA Equifax.
mkchain utilizza utility esterne da installare prima dell'esecuzione:
Questo strumento funziona con:
MacOS/FreeBSD:
pkg install getopt)greadlink da coreutils (installato tramite homebrew)Vedi questo.
Vedi questo.
GPLv3 : http://www.gnu.org/licenses/
Software libero, Evviva!