Bash - Conversion de Certificats Multi-Formats
Résumé
Ce script permet de convertir des certificats entre différents formats, répondant aux besoins de compatibilité avec plusieurs systèmes et applications. Il gère les conversions vers des formats courants tels que PEM, DER, CER, CRT, CERT, P12, PFX et P7B. Le script offre des fonctionnalités de gestion des clés privées pour les conversions spécifiques et intègre des messages colorés pour une meilleure lisibilité en ligne de commande.
Pour télécharger le script, suivez ce lien : cert-convert.sh
Détails du Script
Auteur : Cbillet
Date de création : 10/11/2024
Version : 1.0
Fonctionnalités Clés
Conversion de Certificat : Transforme les certificats en plusieurs formats pour une compatibilité accrue.
Support des Conversions de Clés Privées : Les formats comme .p12 et .pfx nécessitent l’ajout d’un fichier clé privée fourni via une option dédiée.
Gestion des Conversions Redondantes : Le script ignore les conversions redondantes (comme .pfx vers .p12 et inversement) et signale l’ignorance avec des messages d’information.
Retour Visuel Amélioré : Les messages de réussite, d’erreur, et d’information utilisent des couleurs pour faciliter la lecture en ligne de commande.
Compatibilité Étendue : Les formats .pem, .crt, .cer, et .cert sont traités de manière interchangeable.
Usage
Pour exécuter le script, utilisez la commande suivante :
/bin/bash /chemin/vers/votre/script.sh -i <fichier_entree> -e <extensions_sortie> [-o <prefix_sortie>] [-k <fichier_cle_privee>]
Arguments
Le script accepte les arguments suivants :
-i, –input <fichier_entree> : Spécifie le fichier de certificat en entrée. Ce paramètre est obligatoire.
-e, –extensions <extensions_sortie> : Liste des extensions de sortie souhaitées, séparées par des virgules. Ce paramètre est obligatoire. - Extensions Valides : pem, der, cer, crt, cert, p12, pfx, p7b.
-o, –output-prefix <prefix_sortie> : Préfixe pour les fichiers de sortie, optionnel. - Par défaut, le script utilise le nom de fichier d’entrée sans extension.
-k, –key <fichier_cle_privee> : Chemin vers le fichier de clé privée requis pour les conversions en .p12 ou .pfx.
-h, –help : Affiche l’aide détaillée avec toutes les options disponibles et termine l’exécution.
Limitations
Certaines conversions ne sont pas prises en charge en raison des spécificités des formats :
Format .p7b : Ce format PKCS#7 est limité aux chaînes de certificats et ne peut pas contenir de clé privée. Les conversions vers .p7b sont restreintes aux certificats publics uniquement.
Conversion .der et .p7b : Les conversions de .der et .p7b vers certains formats peuvent ne pas être supportées. Le script émet des messages d’erreur dans ces cas.
Fonctionnement du Script
Validation des Extensions : Le script vérifie si les extensions de sortie demandées sont valides. Si une extension n’est pas supportée, un message d’erreur s’affiche avec la liste des extensions valides.
Conversion : Pour chaque extension de sortie valide spécifiée, le script appelle openssl pour effectuer la conversion. Selon l’extension d’entrée et de sortie, différentes options de conversion sont appliquées : - Les formats .pem, .crt, .cer, et .cert sont compatibles pour la conversion entre eux. - La conversion vers .p12 et .pfx nécessite une clé privée fournie par l’option -k.
Gestion des Messages : - Les messages de conversion réussie sont affichés en vert. - Les erreurs, comme les conversions non supportées ou l’absence de clé privée, apparaissent en rouge. - Les informations (par exemple, pour les conversions redondantes ignorées) sont affichées en jaune.
Exemples d’Utilisation
Conversion vers plusieurs formats avec clé privée :
/bin/bash /chemin/vers/votre/script.sh -i mon_certificat.pem -e der,crt,p12 -o mon_certificat_converti -k ma_cle_privee.key
Dans cet exemple, le script prend mon_certificat.pem en entrée et effectue les conversions vers les formats .der, .crt, et .p12. La clé privée ma_cle_privee.key est nécessaire pour la conversion vers le format .p12.
Conversion vers le format PKCS#7 (.p7b) sans clé privée :
/bin/bash /chemin/vers/votre/script.sh -i mon_certificat.pem -e p7b
Cet exemple convertit le fichier mon_certificat.pem en .p7b, sans nécessiter de clé privée, conformément aux spécifications du format .p7b.
Affichage de l’aide :
/bin/bash /chemin/vers/votre/script.sh -h
Cette commande affiche les options disponibles ainsi que des explications sur l’utilisation du script.
Compatibilité
Ce script nécessite openssl pour fonctionner. Veillez à ce que openssl soit installé et accessible dans le chemin système. Le script est compatible avec les systèmes Linux et Unix.
Précautions d’Utilisation
Permissions de Fichier : Assurez-vous que le script a les permissions d’exécution (chmod +x script.sh).
Accès aux Clés Privées : Si vous utilisez l’option -k pour spécifier une clé privée, vérifiez que le fichier est accessible et protégé contre les accès non autorisés.
Utilisation de `openssl` : Certaines commandes openssl requièrent des droits d’accès spécifiques, en particulier si elles manipulent des clés privées. Il est recommandé d’exécuter le script avec un utilisateur ayant les permissions nécessaires pour éviter les erreurs de droits d’accès.
Notes Complémentaires
Le script utilise des conversions spécifiques selon les conventions des formats, telles que la conversion d’un fichier .der en .pem, qui est ensuite enregistré sous une extension différente (.crt, .cer, .cert) pour assurer la compatibilité interformat.
Les conversions vers .p7b se font sans clé privée et sont réservées aux chaînes de certificats publiques.