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