bg-tutorials

Comment générer une CSR pour un certificat de signature de code avec OpenSSL

Ce guide explique comment une demande de signature de certificat (CSR) est générée pour un certificat de signature de code lorsque vous travaillez avec OpenSSL, et, tout aussi important, quand cette méthode ne s’applique plus. Depuis le 1er juin 2023, les règles concernant les clés de signature de code ont changé, si bien que l’ancien flux de travail OpenSSL, purement logiciel, n’est plus accepté par les autorités de certification pour un certificat de signature de code de confiance publique. Lisez d’abord l’exigence ci-dessous, puis suivez la démarche correspondant à la façon dont votre clé est stockée.

Important : les clés de signature de code doivent résider sur du matériel

Selon les exigences de base du CA/Browser Forum pour la signature de code, en vigueur depuis le 1er juin 2023, la clé privée de tout certificat de signature de code de confiance publique, qu’il soit standard (OV) ou à validation étendue (EV), doit être générée et stockée dans un module cryptographique matériel conforme à la norme FIPS 140-2 Niveau 2, Critères communs EAL4+, ou une norme équivalente. La clé doit être non exportable. La signature de code EV a toujours exigé du matériel ; cette règle a étendu la même protection aux certificats standard.

Conséquence pratique : une clé privée et une CSR générées uniquement en logiciel avec OpenSSL sur un ordinateur portable ou un serveur ne sont plus acceptées pour l’émission d’un certificat de signature de code de confiance publique. Les autorités de certification ont cessé de prendre en charge la génération de clés via navigateur et les CSR logicielles pour ces produits. Votre clé se trouve désormais dans l’un de ces emplacements :

  • Un jeton matériel qui vous est expédié (par exemple une YubiKey ou un eToken SafeNet/Thales). Avec la méthode de livraison par jeton et expédition, l’autorité de certification génère la clé sur l’appareil et gère la CSR, vous n’avez donc pas besoin d’en créer une avec OpenSSL.
  • Un module de sécurité matériel (HSM) que vous contrôlez, sur site ou dans le cloud. Ici, vous générez la clé à l’intérieur du HSM et produisez une CSR ainsi qu’une attestation de clé prouvant qu’elle a été créée dans le matériel.
  • Un service de signature dans le cloud qui conserve la clé dans un HSM conforme en votre nom.

Choisissez votre méthode en fonction de la façon dont vous prévoyez de recevoir et de stocker le certificat. Pour un aperçu, consultez le guide sur les méthodes de livraison de la signature de code. Pour les étapes de génération de CSR et d’attestation liées au matériel, suivez le guide correspondant à votre appareil :

Si vous utilisez un autre HSM, générez la CSR avec l’outillage de ce fournisseur afin que la clé reste dans le matériel. La commande OpenSSL req présentée plus loin conserve un rôle dans ces flux de travail lorsque OpenSSL pilote le HSM via un fournisseur ou un moteur, mais elle doit référencer une clé qui réside déjà dans le module, jamais un simple fichier de clé logicielle pour un certificat de confiance publique.

Quand la méthode logicielle OpenSSL s’applique encore

Le flux de travail logiciel ci-dessous produit un fichier de clé sur disque. Cela n’est acceptable que pour les cas qui ne sont pas un certificat de signature de code de confiance publique, tels que :

  • La signature interne ou de test avec une autorité de certification privée/d’entreprise, où votre propre politique, et non les règles publiques du CA/Browser Forum, régit le stockage des clés.
  • L’apprentissage de la structure des commandes OpenSSL avant de passer à un jeton ou à un HSM.
  • La préparation des détails du sujet et de la syntaxe des commandes que vous réutiliserez lors de la génération de la véritable CSR à partir de votre clé matérielle.

Ne soumettez pas une clé et une CSR générées par logiciel à une autorité de certification publique pour un certificat de signature de code OV ou EV. Elle sera rejetée. Cette limite étant claire, voici le processus OpenSSL et les commandes concernées.

1. Télécharger et installer OpenSSL

Si OpenSSL n’est pas déjà installé sur votre ordinateur, téléchargez une version actuelle (OpenSSL 3.x ou ultérieure) pour votre système d’exploitation et installez-la. macOS et la plupart des distributions Linux incluent déjà OpenSSL ; sous Windows, vous installez généralement une version tierce. Confirmez l’installation et la version avec :

openssl version

2. Ouvrir un terminal et charger OpenSSL

Sous Windows, appuyez sur la touche Windows + R, tapez cmd, puis appuyez sur Entrée. Pour les commandes qui écrivent des fichiers dans des dossiers protégés, exécutez l’invite de commandes en tant qu’administrateur : faites un clic droit sur l’icône de l’invite de commandes et choisissez Exécuter en tant qu’administrateur. Vous pouvez aussi taper cmd dans la recherche de la barre des tâches et ouvrir l’invite de commandes à partir de là. Sur macOS ou Linux, ouvrez votre application de terminal.

Si le binaire OpenSSL ne se trouve pas dans votre chemin système sous Windows, placez-vous d’abord dans son dossier d’installation, en utilisant le chemin correspondant à votre version :

cd OpenSSL-Win32bin
cd "Program FilesOpenSSL-Win64bin"

3. Générer la clé privée et la CSR

Générez d’abord la clé privée. Les certificats de signature de code nécessitent une clé robuste : utilisez une clé RSA 3072 bits (ou plus), le minimum courant pour la signature de code, ou une clé ECDSA sur la courbe P-256. Pour créer une clé RSA 3072 bits :

openssl genrsa -out code_signing_key.key 3072

Générez ensuite la CSR à partir de cette clé. OpenSSL utilise SHA-256 par défaut pour la signature de la requête dans les versions actuelles :

openssl req -new -key code_signing_key.key -out code_signing_csr.txt

4. Compléter les champs de la CSR

OpenSSL vous demande les informations identifiant le détenteur du certificat. Saisissez des informations exactes et à jour, correspondant à vos registres légaux d’organisation, car l’autorité de certification les valide. Remplacez les exemples par vos propres informations :

  • Pays (C) : le code pays à deux lettres où votre entreprise est enregistrée ou où vous résidez, par exemple US.
  • État ou province (ST) : le nom complet de l’état ou de la province, par exemple California.
  • Localité (L) : la ville où votre entreprise est enregistrée, par exemple San Jose.
  • Nom de l’organisation (O) : le nom officiel et légal de votre organisation, ou votre nom complet légal si le certificat est destiné à un particulier, par exemple GPI Holding LLC.
  • Unité organisationnelle (OU) : le département demandant le certificat, par exemple IT. Ce champ est facultatif.
  • Nom commun (CN) : le nom légal de votre organisation, ou votre nom complet pour un certificat individuel. Pour la signature de code, le nom commun est l’identité qui apparaît en tant qu’éditeur.
  • Adresse e-mail : une adresse e-mail de contact valide.

Vous pouvez laisser vides le mot de passe de défi facultatif et le champ de nom d’entreprise facultatif : appuyez simplement sur Entrée à ces invites.

Vous pouvez aussi combiner les étapes 3 et 4 en une seule commande. L’option -subj fournit le sujet directement afin qu’OpenSSL ne pose pas de questions, et -nodes laisse la clé non chiffrée sur le disque (OpenSSL 3.x a renommé cette option en -noenc, mais -nodes fonctionne toujours). Notez que la valeur utilise des guillemets droits, et non courbes, et que toute la chaîne est entourée d’une seule paire de guillemets :

openssl req -new -newkey rsa:3072 -nodes -keyout code_signing_key.key -out code_signing_csr.txt -subj "/C=US/ST=California/L=San Jose/O=GPI Holding LLC/OU=IT/CN=GPI Holding LLC"

5. Vérifier la CSR

Avant de soumettre quoi que ce soit, confirmez que la CSR est valide et que ses informations sont correctes. Cette commande affiche le sujet décodé et vérifie la signature de la requête :

openssl req -noout -text -verify -in code_signing_csr.txt

Vérifiez que la ligne Subject indique le pays, l’organisation et le nom commun exactement comme prévu, que la taille de la clé publique est de 3072 bits ou plus (ou une clé ECDSA), et que l’algorithme de signature est SHA-256. Vous devriez également voir un message verify OK, confirmant que la CSR a été signée par sa clé privée correspondante.

6. Déplacer la clé privée et la CSR vers un répertoire sécurisé

Déplacez la clé privée et la CSR hors du dossier OpenSSL vers un répertoire que vous contrôlez. Gardez la clé privée secrète et ne la partagez jamais avec quiconque en dehors de votre organisation : toute personne qui la détient peut signer des logiciels en votre nom. Sous Windows, créez un dossier et déplacez-y les fichiers :

md c:codesigningcertificates
move code_signing_key.key c:codesigningcertificates
move code_signing_csr.txt c:codesigningcertificates

7. Soumettre la CSR à votre autorité de certification

Ouvrez le fichier CSR dans un éditeur de texte brut, comme le Bloc-notes, et copiez tout son contenu, y compris les lignes —–BEGIN CERTIFICATE REQUEST—– et —–END CERTIFICATE REQUEST—–, dans le formulaire d’inscription lors de votre commande de certificat. Un bloc de CSR ressemble à ceci :

-----BEGIN CERTIFICATE REQUEST-----
MIICvDCCAaQCAQAw...
...base64 encoded request...
-----END CERTIFICATE REQUEST-----

Rappelez-vous la règle énoncée au début de ce guide : pour un certificat de signature de code de confiance publique, la CSR que vous soumettez doit correspondre à une clé générée et conservée dans du matériel conforme. Si vous avez généré une clé logicielle avec les étapes ci-dessus, utilisez-la uniquement pour la signature interne ou de test. Pour une commande auprès d’une autorité de certification publique, générez la CSR à partir de votre jeton ou HSM en suivant le guide YubiKey ou Luna HSM, ou laissez l’autorité de certification générer la clé lorsque vous choisissez la méthode de livraison par jeton et expédition.

Pour la syntaxe générale d’OpenSSL au-delà de la création de CSR, la référence commandes OpenSSL est un compagnon utile. Vous pouvez également explorer davantage de tutoriels OpenSSL et de tutoriels de signature de code, ou découvrir d’autres façons de générer une CSR.

Economisez 10% sur les certificats SSL en commandant aujourd’hui!

Émission rapide, cryptage puissant, confiance de 99,99 % du navigateur, assistance dédiée et garantie de remboursement de 25 jours. Code de coupon: SAVE10

Image détaillée d'un dragon en vol
Rédigé par

Rédacteur de contenu expérimenté spécialisé dans les certificats SSL. Transformer des sujets complexes liés à la cybersécurité en un contenu clair et attrayant. Contribuer à l'amélioration de la sécurité numérique par des récits percutants.