Bash - Génération de certificat auto-signé

  • Auteur : Cbillet

  • Date de création : 10/11/2024

  • Version : 1.0

  • Contact : N/A

Index

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 : cert-autosign.sh

Utilisation

Syntaxe de la commande

./generate_self_signed.sh -c <fichier_csr> -k <fichier_cle> [-o <fichier_certificat>] [-d <jours>] [-H <algorithme_hachage>]

Options

  • -c, --csr <fichier_csr> : Fichier CSR en entrée (obligatoire). Le CSR contient les informations d’identité pour le certificat.

  • -k, --key <fichier_cle> : Fichier de clé privée associé au CSR (obligatoire). Utilisé pour signer le certificat.

  • -o, --output <fichier_certificat> : 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 <jours> : 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_hachage> : 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) :

    ./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 :

    ./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 :

    openssl x509 -req -in <fichier_csr> -signkey <fichier_cle> -out <output_file> -days <jours> -<algorithme_hachage>
    
    • Cette commande effectue les étapes suivantes : - -req : indique qu’un CSR est utilisé en entrée. - -in <fichier_csr> : spécifie le fichier CSR à utiliser. - -signkey <fichier_cle> : utilise la clé privée pour signer le certificat. - -out <output_file> : définit le fichier de sortie pour le certificat généré. - -days <jours> : définit la durée de validité du certificat. - -<algorithme_hachage> : 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.