
Outil open source pour vous aider à construire une chaîne de certificats SSL valide.
Description • Comment utiliser • Paramètres • Comment ça fonctionne • Prérequis • Autre • Licence
Est un outil open source pour vous aider à construire une chaîne de certificats SSL valide. Il peut aussi vous aider à corriger une chaîne incomplète et télécharger tous les certificats CA manquants. Vous pouvez également télécharger tous les certificats depuis un serveur distant et obtenir une chaîne de certificats correcte.
C'est simple :
# Clone this repository
git clone https://github.com/trimstray/mkchain
# Go into the repository
cd mkchain
# Install
./setup.sh install
# Run the app
mkchain -i /data/certs -o /data/chain.crt
- Le lien symbolique vers
bin/mkchainest placé dans/usr/local/bin- La page de manuel est placée dans
/usr/local/man/man8
Fournit les options suivantes :
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 show this message
--debug displays information on the screen (debug mode)
-i, --in add certificates to merge (file, multiple files, directory with ssl certificates
or remote domain)
-o, --out saves the result (chain) to a file
--with-root add root certificate to certificates chain
-o|--out- sans ce paramètre,mkchainenregistre la chaîne de sortie dans le répertoiremkchain/chains/.
Avant de le lire, veuillez consulter l'article sur SSL Certificate Chain.
Commençons avec la chaîne de certificats ssllabs. Ils sont fournis avec mkchain et se trouvent dans le répertoire example/ssllabs.com qui contient également le répertoire all (contenant tous les certificats nécessaires pour assembler la chaîne) et le répertoire server_certificate (contenant uniquement le certificat serveur).
La chaîne correcte pour le domaine ssllabs.com (résultat de la commande 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
Le code ci-dessus présente une chaîne complète composée de :
Certificat d'identité (Certificat serveur)
délivré pour ssllabs.com par Entrust Certification Authority - L1K
Certificat intermédiaire
délivré pour Entrust Certification Authority - L1K par Entrust Root Certification Authority - G2
Certificat intermédiaire
délivré pour Entrust Root Certification Authority - G2 par Entrust Root Certification Authority
Certificat racine (Certificat auto-signé)
délivré pour Entrust Root Certification Authority par Entrust Root Certification Authority
Dans ce scénario, nous allons chaîner tous les certificats fournis. Exemple d'exécution de l'outil :
Dans ce scénario, nous utilisons uniquement le certificat serveur et nous l'utilisons pour récupérer les certificats requis restants. Ensuite, comme ci-dessus, nous combinerons tous les certificats fournis. Exemple d'exécution de l'outil :
Pour créer une chaîne valide, vous devez fournir à l'outil tous les certificats nécessaires (si vous définissez un répertoire pour le paramètre -i|--in). Ce seront :
C'est très important car sans cela, vous ne pourrez pas déterminer le début et la fin de la chaîne.
Si vous définissez uniquement un fichier de certificat comme valeur
-i|--in,mkchaintélécharge automatiquement tous les certificats nécessaires.
Cependant, si vous regardez à l'intérieur de la chaîne générée après la génération avec mkchain, vous n'y trouverez pas le certificat racine.
Pourquoi ? Parce que les certificats racines auto-signés ne doivent pas / ne devraient pas être inclus dans la configuration du serveur web. Ils ne servent à rien (les clients les ignoreront toujours) et ils entraînent une légère pénalité de performance (latence) car ils augmentent la taille de la négociation SSL.
Si vous souhaitez ajouter un certificat racine à la chaîne de certificats, appelez l'utilitaire avec le paramètre --with-root.
mkchain permet d'utiliser deux chemins de certification :
Lors de la génération de la chaîne de certificats, mkchain affiche des commentaires avec des informations sur les certificats, y compris les éventuelles erreurs.
Voici une liste de toutes les possibilités :
Le message est affiché en l'absence d'un certificat serveur qui est le début de la chaîne. C'est un cas unique car dans cette situation, mkchain termine son fonctionnement en affichant uniquement cette information. Le certificat serveur est le seul certificat requis pour créer correctement une chaîne. Sans ce certificat, la chaîne correcte ne sera pas créée.
La situation inverse ici - message affiché lorsqu'un certificat serveur valide est trouvé.
Ce message apparaît lorsque le premier des deux certificats intermédiaires n'est pas trouvé. Cette information ne spécifie pas explicitement l'absence d'un deuxième certificat intermédiaire et permet d'autre part de déterminer si le certificat intermédiaire auquel le certificat serveur a été signé existe. De plus, il peut être affiché si le deuxième certificat intermédiaire a été fourni.
Similaire au précédent, mais concerne le deuxième certificat intermédiaire. Cependant, il est possible de créer la chaîne correctement en utilisant le deuxième chemin de certification, par exemple en utilisant le premier certificat intermédiaire et en remplaçant le second par le certificat principal.
Ce message signifie qu'un ou plusieurs des certificats intermédiaires requis sont manquants et s'affiche en l'absence du certificat racine.
Ce message indique le nombre de certificats intermédiaires valides.
L'absence du certificat racine est traitée comme un avertissement. Bien sûr, lors de la configuration des certificats côté serveur, il n'est pas recommandé d'attacher un certificat racine, mais si vous créez une chaîne avec mkchain, il traite la chaîne comme incomplète en affichant des informations sur la création incorrecte de la chaîne.
Ce message n'informe pas d'une erreur et de l'absence du champ CN, ce qui peut arriver avec certains certificats (regardez example/google.com). Le champ Common Name identifie le nom d'hôte associé au certificat. Il n'y a pas d'exigence dans RFC3280 pour qu'un DN d'émetteur ait un CN. La plupart des CA incluent un CN dans le DN de l'émetteur, mais certaines non, comme cette CA Equifax.
mkchain utilise des utilitaires externes à installer avant l'exécution :
Cet outil fonctionne avec :
MacOS/FreeBSD :
pkg install getopt)greadlink de coreutils (installé via homebrew)Voir ceci.
Voir ceci.
GPLv3 : http://www.gnu.org/licenses/
Logiciel libre, Ouais !