Génération de Certificats X.509 en Cryptographie

LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous explorerez les aspects pratiques de la création et de la gestion des certificats X.509, une pierre angulaire de la sécurité numérique moderne. Les certificats X.509 sont des documents numériques qui lient une clé publique à une identité, telle qu'une personne ou un serveur, et sont fondamentaux pour des protocoles comme TLS/SSL pour sécuriser le trafic web.

En utilisant l'outil puissant en ligne de commande openssl, vous apprendrez à effectuer des tâches essentielles de gestion de certificats. Vous commencerez par comprendre la structure d'un certificat, puis vous créerez un certificat auto-signé (self-signed) à des fins de développement. Ensuite, vous générerez une Demande de Signature de Certificat (CSR - Certificate Signing Request) et agirez en tant qu'Autorité de Certification (CA - Certificate Authority) simple pour la signer, produisant ainsi un certificat de confiance au sein de votre propre système.

À la fin de ce laboratoire, vous aurez une compréhension solide et pratique du cycle de vie des certificats.

Aperçu des Certificats X.509

Dans cette étape, nous allons aborder la théorie de base derrière les certificats X.509. Il n'y a pas de commandes à exécuter ici ; cette section est destinée à votre compréhension avant de commencer les tâches pratiques.

Un certificat X.509 est un document numérique standardisé qui contient des informations cruciales pour établir la confiance. Ses principaux composants comprennent :

  • Sujet (Subject) : L'identité du détenteur du certificat (par exemple, une personne, un nom de serveur comme www.example.com).
  • Émetteur (Issuer) : L'entité qui a vérifié l'identité et signé le certificat (l'Autorité de Certification ou CA).
  • Clé Publique (Public Key) : La clé publique correspondant à la clé privée du sujet.
  • Période de Validité (Validity Period) : Les dates (Not Before et Not After) pendant lesquelles le certificat est valide.
  • Signature : La signature numérique de l'émetteur, qui garantit l'authenticité du certificat.

Un certificat auto-signé (self-signed certificate) est un type spécial de certificat où l'émetteur et le sujet sont identiques. Essentiellement, le certificat se signe lui-même. Bien que ces certificats ne soient pas considérés comme fiables par les navigateurs ou systèmes publics (car ils ne sont pas vérifiés par une CA connue), ils sont extrêmement utiles pour les tests internes, les environnements de développement ou les réseaux privés où vous contrôlez à la fois le client et le serveur.

Dans l'étape suivante, vous créerez votre propre certificat auto-signé.

Créer un Certificat Auto-Signé

Dans cette étape, vous allez créer un certificat auto-signé. Une clé privée nommée private.pem a déjà été générée pour vous dans le répertoire ~/project afin de simplifier le processus. Vous utiliserez cette clé pour générer un certificat.

La commande openssl req est utilisée pour créer et traiter les demandes de certificat. Décomposons les options (flags) que nous allons utiliser :

  • -new: Génère une nouvelle demande de certificat.
  • -x509: Produit un certificat auto-signé au lieu d'une demande de certificat.
  • -key private.pem: Spécifie la clé privée à utiliser.
  • -out cert.pem: Spécifie le nom du fichier de sortie pour le certificat.
  • -days 365: Définit la validité du certificat à 365 jours.
  • -subj "...": Fournit les informations du sujet de manière non interactive.

Maintenant, exécutez la commande suivante dans votre terminal pour créer le certificat :

openssl req -new -x509 -key private.pem -out cert.pem -days 365 -subj "/C=US/ST=California/L=Mountain View/O=MyOrg/CN=example.com"

Cette commande ne produira aucune sortie, mais elle créera un nouveau fichier. Vous pouvez vérifier que le fichier cert.pem a été créé en listant les fichiers dans le répertoire courant :

ls

Vous devriez voir cert.pem dans la sortie, ainsi que les fichiers pré-générés.

ca-key.pem  ca.pem  cert.pem  private.pem

Visualiser les Détails du Certificat

Dans cette étape, vous allez inspecter le contenu du certificat auto-signé que vous venez de créer. Cela vous permettra de vérifier ses détails et de comprendre sa structure dans un format lisible par l'homme.

Nous utiliserons la commande openssl x509, conçue pour visualiser et manipuler les fichiers de certificat.

  • -in cert.pem: Spécifie le fichier de certificat en entrée.
  • -text: Affiche tous les détails du certificat au format texte.
  • -noout: Empêche la commande d'afficher la version encodée du certificat.

Exécutez la commande suivante pour visualiser les détails de cert.pem :

openssl x509 -in cert.pem -text -noout

La sortie sera assez longue, mais faites défiler et prêtez attention à ces champs clés :

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            ...
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = US, ST = California, L = Mountain View, O = MyOrg, CN = example.com
        Validity
            Not Before: ...
            Not After : ...
        Subject: C = US, ST = California, L = Mountain View, O = MyOrg, CN = example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    ...
                Exponent: 65537 (0x10001)
...

Remarquez que les champs Issuer (Émetteur) et Subject (Sujet) sont identiques. C'est la caractéristique déterminante d'un certificat auto-signé.

Générer une Demande de Signature de Certificat (CSR)

Dans cette étape, vous allez générer une Demande de Signature de Certificat (CSR - Certificate Signing Request). Une CSR est un bloc de texte encodé contenant votre clé publique et vos informations d'identité. Vous envoyez une CSR à une Autorité de Certification (CA - Certificate Authority) pour demander un certificat numérique signé.

Nous utiliserons à nouveau la commande openssl req, mais cette fois sans l'option -x509, afin qu'elle produise une CSR au lieu d'un certificat auto-signé.

  • -new: Indique une nouvelle demande.
  • -key private.pem: Utilise votre clé privée existante.
  • -out csr.pem: Spécifie le nom du fichier de sortie pour la CSR.
  • -subj "...": Fournit les informations d'identité pour le certificat que vous demandez.

Exécutez la commande suivante pour générer une CSR pour une application web fictive :

openssl req -new -key private.pem -out csr.pem -subj "/C=US/ST=New York/L=New York City/O=MyWebApp/CN=webapp.example.com"

Cette commande créera un nouveau fichier nommé csr.pem. Vous pouvez vérifier sa création avec la commande ls :

ls

Vous verrez maintenant csr.pem dans votre répertoire de projet.

ca-key.pem  ca.pem  cert.pem  csr.pem  private.pem

Cette CSR est maintenant prête à être envoyée à une CA pour signature.

Signer la CSR

Dans cette étape finale, vous allez agir en tant qu'Autorité de Certification (CA) pour signer la CSR que vous avez créée à l'étape précédente. À cette fin, un certificat de CA simple (ca.pem) et sa clé privée correspondante (ca-key.pem) ont été pré-générés dans votre environnement.

Nous utiliserons la commande openssl x509 -req pour traiter la CSR et émettre un nouveau certificat.

  • -req: Spécifie que nous traitons une CSR.
  • -in csr.pem: Le fichier CSR en entrée.
  • -CA ca.pem: Le certificat de la CA utilisé pour la signature.
  • -CAkey ca-key.pem: La clé privée de la CA utilisée pour la signature.
  • -out signed-cert.pem: Le fichier de sortie pour le certificat nouvellement signé.
  • -days 365: Définit la période de validité (365 jours).
  • -CAcreateserial: Crée et gère un fichier de numéro de série (ca.srl), requis pour que les CA suivent les certificats émis.

Exécutez la commande ci-dessous pour signer la CSR :

openssl x509 -req -in csr.pem -CA ca.pem -CAkey ca-key.pem -out signed-cert.pem -days 365 -CAcreateserial

Vous verrez une sortie confirmant que la signature a réussi :

Certificate request self-signature ok
subject=C = US, ST = New York, L = New York City, O = MyWebApp, CN = webapp.example.com

Maintenant, listez les fichiers pour voir votre certificat nouvellement créé, signed-cert.pem, ainsi que le fichier de série, ca.srl.

ls
ca-key.pem  ca.pem  ca.srl  cert.pem  csr.pem  private.pem  signed-cert.pem

Vous pouvez inspecter ce nouveau certificat avec openssl x509 -in signed-cert.pem -text -noout. Vous remarquerez que l'Issuer (Émetteur) est maintenant la CA (CN=myca.com), et que le Subject (Sujet) est l'identité de votre CSR (CN=webapp.example.com).

Résumé

Dans ce laboratoire, vous avez acquis une expérience pratique du cycle de vie fondamental des certificats X.509 en utilisant l'outil openssl.

Vous avez réussi à apprendre comment :

  • Comprendre les composants principaux d'un certificat X.509 et le concept des certificats auto-signés (self-signed certificates).
  • Créer un certificat auto-signé adapté au développement et aux tests en utilisant openssl req.
  • Inspecter les détails d'un certificat pour vérifier son contenu avec openssl x509.
  • Générer une Demande de Signature de Certificat (CSR) pour demander formellement un certificat à une CA.
  • Agir en tant que simple Autorité de Certification pour signer une CSR et émettre un nouveau certificat valide.

Ces compétences sont essentielles pour toute personne impliquée dans l'administration système, la sécurité des réseaux ou le développement logiciel, fournissant la base pour gérer les communications sécurisées dans une variété d'applications.