========================================== Bash - Génération de certificat auto-signé ========================================== - **Auteur** : Cbillet - **Date de création** : 10/11/2024 - **Version** : 1.0 - **Contact** : N/A Index ===== .. contents:: :depth: 2 :local: :backlinks: top Description =========== Ce script utilise OpenSSL pour générer un certificat auto-signé à partir d'un fichier CSR (Certificate Signing Request) et de sa clé privée associée. Il permet de personnaliser la durée de validité, le nom du fichier de sortie, et l'algorithme de hachage utilisé pour signer le certificat. Pour télécharger le script, suivez ce lien : :download:`cert-autosign.sh <./cert-autosign.sh>` Utilisation =========== Syntaxe de la commande ---------------------- .. code-block:: bash ./generate_self_signed.sh -c -k [-o ] [-d ] [-H ] Options ------- - ``-c, --csr `` : Fichier CSR en entrée (obligatoire). Le CSR contient les informations d'identité pour le certificat. - ``-k, --key `` : Fichier de clé privée associé au CSR (obligatoire). Utilisé pour signer le certificat. - ``-o, --output `` : Nom du fichier de certificat de sortie. Si non spécifié, le fichier de sortie est nommé automatiquement avec l'extension ``.crt`` (par exemple, ``server.csr`` devient ``server.crt``). - ``-d, --days `` : Durée de validité du certificat en jours (par défaut : 365). Seules les valeurs entières positives sont acceptées. - ``-H, --hash-alg `` : Algorithme de hachage utilisé pour signer le certificat. Options valides : ``sha256``, ``sha384``, ``sha512``. Par défaut, ``sha256`` est utilisé. - ``-h, --help`` : Affiche cette aide et les détails d’utilisation du script. Exemples d'exécution -------------------- 1. **Générer un certificat auto-signé avec les options par défaut** (valide pour 365 jours, utilisant SHA-256) : .. code-block:: bash ./generate_self_signed.sh -c server.csr -k server.key 2. **Générer un certificat auto-signé avec une durée de validité de 730 jours et SHA-512 comme algorithme de hachage** : .. code-block:: bash ./generate_self_signed.sh -c server.csr -k server.key -o my_cert.crt -d 730 -H sha512 Fonctionnement du script et Explications des Mécanismes OpenSSL =============================================================== Le script utilise OpenSSL pour signer le certificat à partir d'un fichier CSR, avec les mécanismes et options suivants : 1. **Fichier CSR (Certificate Signing Request)** : - Le CSR est un fichier généré à partir d'une clé privée et contient des informations sur l'entité qui demande le certificat (par exemple, domaine, organisation, localisation). - Dans le script, le CSR est passé avec l'option ``-c`` ou ``--csr`` et est une entrée obligatoire. Ce fichier est utilisé comme base pour le certificat auto-signé. 2. **Clé privée** : - La clé privée associée au CSR est requise pour signer le certificat auto-signé. - Elle est fournie avec l'option ``-k`` ou ``--key``. - Lorsqu'OpenSSL reçoit la clé privée avec l'option ``-signkey``, il l’utilise pour signer numériquement le certificat final. Cela garantit que seul le propriétaire de la clé privée peut authentifier le certificat. 3. **Durée de validité du certificat** : - OpenSSL utilise l’option ``-days`` pour définir la période de validité du certificat, à partir de la date de création. - Cette durée est spécifiée avec l'option ``-d`` ou ``--days`` dans le script. Si elle n'est pas précisée, la durée par défaut est de 365 jours. 4. **Algorithme de hachage** : - Le script utilise un algorithme de hachage pour signer le certificat. Les options disponibles sont ``sha256``, ``sha384``, et ``sha512``. - Lors de la signature du certificat, OpenSSL applique le hachage spécifié, garantissant ainsi l'intégrité et la sécurité du certificat. - Cette option est fournie via ``-H`` ou ``--hash-alg``. Si elle n'est pas précisée, SHA-256 est utilisé par défaut. 5. **Génération du certificat avec OpenSSL** : - La commande OpenSSL exécutée par le script est de la forme : .. code-block:: bash openssl x509 -req -in -signkey -out -days - - Cette commande effectue les étapes suivantes : - ``-req`` : indique qu'un CSR est utilisé en entrée. - ``-in `` : spécifie le fichier CSR à utiliser. - ``-signkey `` : utilise la clé privée pour signer le certificat. - ``-out `` : définit le fichier de sortie pour le certificat généré. - ``-days `` : définit la durée de validité du certificat. - ``-`` : applique l'algorithme de hachage spécifié (ex. : ``-sha256``). **Note** : Les options de hachage influencent la sécurité et la compatibilité du certificat. SHA-256 est recommandé pour des standards de sécurité actuels, tandis que SHA-512 offre une sécurité encore plus élevée. 6. **Message de confirmation** : - Une fois la génération terminée, le script vérifie la création du fichier de certificat et affiche un message de succès. En cas d'échec, un message d'erreur est affiché pour aider au diagnostic. Notes supplémentaires ===================== - **Vérification des valeurs** : La valeur de l'option ``--days`` doit être un entier positif. Si ce n’est pas le cas, le script arrête son exécution et affiche une erreur. - **Algorithmes de hachage** : Seuls ``sha256``, ``sha384``, et ``sha512`` sont autorisés pour garantir la sécurité et la compatibilité avec les standards actuels. Compatibilité ============= Le script est conçu pour être exécuté sur des distributions Linux disposant de la commande OpenSSL.