============================================== Bash - Conversion de Certificats Multi-Formats ============================================== .. contents:: :depth: 2 :local: :backlinks: top 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 : :download:`cert-convert.sh <./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 : .. code-block:: bash /bin/bash /chemin/vers/votre/script.sh -i -e [-o ] [-k ] Arguments --------- Le script accepte les arguments suivants : - **-i**, **--input** `` : Spécifie le fichier de certificat en entrée. Ce paramètre est **obligatoire**. - **-e**, **--extensions** `` : 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** `` : 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** `` : 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 ------------------------ 1. **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. 2. **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`. 3. **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 ---------------------- 1. **Conversion vers plusieurs formats avec clé privée** : .. code-block:: bash /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`. 2. **Conversion vers le format PKCS#7 (.p7b) sans clé privée** : .. code-block:: bash /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`. 3. **Affichage de l'aide** : .. code-block:: bash /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.