bg-tutorials

Comment générer un CSR dans Windows

Ce guide vous montre comment générer une CSR (Certificate Signing Request) sous Windows à l’aide des outils fournis avec le système d’exploitation.

La CSR est un bloc de texte PKCS #10 qui transporte votre clé publique et les informations du sujet vers l’autorité de certification, laquelle la signe et vous renvoie votre certificat SSL/TLS. La clé privée correspondante reste sur la machine qui génère la demande.

Windows propose trois méthodes natives pour créer une CSR, chacune étant détaillée ci-dessous. Choisissez celle qui correspond à votre méthode de travail :

  • Le snap-in Certificates MMC (interface graphique), qui vous guide à travers un assistant et vous permet d’ajouter un Subject Alternative Name. C’est la méthode traitée dans le tutoriel original, et celle que la plupart des utilisateurs recherchent.
  • L’outil en ligne de commande certreq.exe avec un fichier INF, qui est scriptable, prend en charge le SAN, et constitue la méthode standard sous Windows Server.
  • Le binaire OpenSSL pour Windows (téléchargement séparé), qui produit la CSR exactement comme le font les administrateurs Linux.

Si vous utilisez un serveur web avec son propre processus de création de CSR, privilégiez-le plutôt que les étapes génériques Windows : consultez les guides dédiés pour IIS et Microsoft Exchange. Les étapes ci-dessous couvrent Windows 10, Windows 11 et Windows Server 2016 à 2025 ; connectez-vous avec un compte disposant des droits d’administrateur local avant de commencer.

Générer une CSR avec le snap-in Certificates MMC

La console de gestion Microsoft (MMC) est fournie avec chaque version prise en charge de Windows et propose un assistant Create Custom Request capable de créer une CSR avec une entrée SAN. L’assistant stocke la nouvelle clé privée dans le magasin de certificats de l’ordinateur local, de sorte que tout service Windows présent sur la machine (IIS, ADFS, RD Gateway, RDP) peut utiliser le certificat émis une fois celui-ci installé.

Étape 1 : Ouvrir le snap-in Certificates MMC pour l’ordinateur local

Appuyez sur Win + R, saisissez la commande ci-dessous, puis appuyez sur Entrée :

mmc

Dans la console MMC vide, ouvrez File > Add/Remove Snap-in. Sélectionnez Certificates dans la liste de gauche, cliquez sur Add, choisissez Computer account, cliquez sur Next, laissez Local computer sélectionné, puis cliquez sur Finish, puis sur OK. Le snap-in Certificates est désormais ancré au magasin de l’ordinateur local, celui-là même que consultent les services Windows.

Étape 2 : Démarrer une demande de certificat personnalisée

Dans le volet de gauche, développez Certificates (Local Computer) et faites un clic droit sur Personal. Choisissez All Tasks > Advanced Operations > Create Custom Request. L’assistant Certificate Enrollment s’ouvre. Cliquez sur Next.

Sur l’écran Select Certificate Enrollment Policy, sélectionnez Proceed without enrollment policy sous Custom Request et cliquez sur Next. Cela indique à Windows de créer une CSR autonome destinée à une autorité de certification externe plutôt que de s’enregistrer via un modèle interne Active Directory Certificate Services.

Étape 3 : Choisir le modèle et le format de la demande

Sur l’écran Custom request, réglez Template sur (No template) CNG key, laissez Request format sur PKCS #10, et cliquez sur Next. CNG (Cryptography Next Generation) est le fournisseur de clés moderne de Windows et constitue le bon choix pour les nouvelles demandes ; l’option CSP héritée n’est nécessaire que pour la compatibilité avec des applications plus anciennes.

Sur l’écran Certificate Information, développez la flèche Details à côté de l’entrée de la demande et cliquez sur Properties. La boîte de dialogue Certificate Properties permet de configurer le reste de la CSR.

Étape 4 : Renseigner le sujet et les Subject Alternative Names

Dans l’onglet General, saisissez un nom convivial et une description facultative afin de pouvoir identifier plus tard la demande en attente dans le magasin de certificats.

Passez à l’onglet Subject. Dans Subject name, ne laissez Type sur Full DN que si vous savez précisément ce que vous faites ; pour la plupart des commandes, ajoutez chaque composant un par un à l’aide du menu déroulant Type. Pour chaque attribut ci-dessous, choisissez le type, saisissez la valeur, puis cliquez sur Add :

  • Common Name : le nom de domaine complet (FQDN) que vous souhaitez sécuriser, par exemple www.yourdomain.com. Pour un certificat wildcard, placez un astérisque devant le domaine racine, par exemple *.yourdomain.com.
  • Country : le code pays ISO à deux lettres, par exemple US, GB ou DE.
  • State : le nom complet de l’État ou de la région (par exemple California, et non CA).
  • Locality : le nom complet de la ville où votre organisation est enregistrée (par exemple San Jose, et non SJ).
  • Organization : la dénomination légale de votre entreprise, telle qu’enregistrée exactement. Obligatoire pour les certificats OV et EV. Pour les certificats de validation de domaine (DV), ce champ est ignoré, donc n’importe quelle valeur de remplacement convient.

Ignorez l’attribut Email. La RFC 5280 indique que les nouveaux certificats comportant une adresse e-mail doivent la placer dans l’extension Subject Alternative Name (en tant que rfc822Name), et non dans le Distinguished Name du sujet, et les autorités de certification publiques peuvent supprimer une valeur d’e-mail du sujet d’un certificat TLS. L’omettre permet de garder une CSR propre.

Dans la section Alternative name du même onglet, réglez Type sur DNS et ajoutez tous les noms d’hôte que le certificat doit couvrir, en cliquant une fois sur Add par entrée. Indiquez également toujours le Common Name ici : les navigateurs, .NET, Java, Go et les autres clients TLS modernes valident strictement le nom d’hôte par rapport à la liste SAN et ignorent le Common Name. Un certificat web classique utilise deux entrées DNS :

  • yourdomain.com
  • www.yourdomain.com

Pour une commande wildcard, ajoutez le wildcard et le domaine racine : *.yourdomain.com et yourdomain.com.

Étape 5 : Configurer la clé et la signature

Passez à l’onglet Private Key et développez chaque section tour à tour.

  • Cryptographic Service Provider : laissez sélectionné le fournisseur par défaut RSA, Microsoft Software Key Storage Provider. Il s’agit du fournisseur CNG moderne pour les clés RSA.
  • Key options : réglez Key size sur 2048 (le minimum actuel exigé par les autorités de certification publiques). Choisissez 3072 ou 4096 uniquement si votre politique impose une clé plus grande ; le compromis est une négociation TLS légèrement plus lente. Cochez Make private key exportable si vous souhaitez pouvoir sauvegarder la clé ou déplacer le certificat émis vers un autre serveur.
  • Select Hash Algorithm : dans la section Select hash algorithm, choisissez sha256. Le SHA-1 n’est plus accepté par les autorités de certification publiques et le SHA-256 est désormais la valeur par défaut. Laissez la case Use alternate signature format décochée.

Cliquez sur OK pour fermer la boîte de dialogue des propriétés, puis cliquez sur Next dans l’assistant.

Étape 6 : Enregistrer le fichier CSR

Sur l’écran Where do you want to save the offline request?, réglez File format sur Base 64 (les autorités de certification attendent un PEM encodé en base64, et non un fichier binaire). Cliquez sur Browse, choisissez un dossier facile à retrouver (un dossier dédié C:certs ou le Bureau sont plus pratiques que le chemin Windows par défaut), donnez au fichier un nom avec une extension .req ou .txt, puis cliquez sur Save. Cliquez sur Finish pour écrire la CSR.

L’assistant écrit la CSR dans le fichier et stocke la clé privée correspondante dans Certificates (Local Computer) > Certificate Enrollment Requests. Ne supprimez pas cette demande en attente : lorsque l’autorité de certification renvoie le certificat émis, Windows l’associe automatiquement à la clé en attente.

Étape 7 : Copier la CSR et la soumettre à l’autorité de certification

Ouvrez le fichier enregistré dans le Bloc-notes. Vous devriez voir un bloc ressemblant à ceci :

-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDXjCCAkYCAQAwgZQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
... (many lines of base64) ...
-----END NEW CERTIFICATE REQUEST-----

Sélectionnez l’intégralité du bloc, y compris les lignes à cinq tirets BEGIN NEW CERTIFICATE REQUEST et END NEW CERTIFICATE REQUEST, copiez-le, puis collez-le dans le champ CSR de votre formulaire de commande SSL.

Générer une CSR avec certreq.exe et un fichier INF

L’utilitaire en ligne de commande certreq.exe est fourni avec chaque version de Windows Server et est également présent sur les clients Windows 10 et 11. C’est la bonne méthode lorsque vous souhaitez scripter la création de CSR, définir des paramètres de clé inhabituels, ou créer la demande à distance via une session ne pouvant pas exécuter la MMC. Le processus comporte trois parties : rédiger un fichier INF de demande, exécuter certreq -new pour générer la CSR, puis soumettre la CSR à votre autorité de certification.

Étape 1 : Créer le fichier INF de demande

Ouvrez le Bloc-notes en tant qu’administrateur et enregistrez le fichier ci-dessous sous le nom request.inf. Modifiez la ligne Subject et les entrées DNS sous [Extensions] pour correspondre à votre domaine :

[Version]
Signature="$Windows NT$"

[NewRequest]
Subject = "CN=www.yourdomain.com, O=Your Company, L=San Jose, S=California, C=US"
KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0
HashAlgorithm = SHA256

[EnhancedKeyUsageExtension]
OID = 1.3.6.1.5.5.7.3.1

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=www.yourdomain.com&"
_continue_ = "dns=yourdomain.com"

Remarques sur les valeurs :

  • Subject : une seule ligne avec les composants séparés par des virgules. Utilisez le code pays ISO à deux lettres dans C=, et écrivez les noms d’État et de ville en toutes lettres.
  • KeyLength : 2048 au minimum. Réglez sur 3072 ou 4096 si votre politique exige une clé plus grande.
  • Exportable = TRUE : permet d’exporter la clé privée avec le certificat émis (pour une sauvegarde ou pour l’installer sur un second serveur). Réglez sur FALSE si vous souhaitez que la clé reste verrouillée sur cette machine.
  • MachineKeySet = TRUE : stocke la clé dans le magasin de l’ordinateur local, celui-là même que consultent des services comme IIS. Laissez cette valeur active pour les charges de travail serveur.
  • HashAlgorithm = SHA256 : signe la demande avec SHA-256, la valeur par défaut moderne. Certains anciens exemples utilisent parfois SHA-1 par défaut, qui n’est plus accepté par les autorités de certification publiques.
  • 2.5.29.17 : l’OID pour le Subject Alternative Name. Ajoutez une ligne _continue_ par nom d’hôte ; chaque ligne, sauf la dernière, doit se terminer par le séparateur &. Indiquez également votre Common Name ici, car les clients TLS valident par rapport à la liste SAN.

Étape 2 : Générer la CSR

Ouvrez une invite de commandes ou une session PowerShell élevée, placez-vous dans le dossier contenant request.inf, et exécutez :

certreq -new request.inf request.csr

L’outil crée la clé privée dans le magasin de l’ordinateur local et écrit la demande PKCS #10 dans request.csr. Ouvrez le fichier, copiez le bloc complet de BEGIN NEW CERTIFICATE REQUEST à END NEW CERTIFICATE REQUEST, et collez-le dans votre formulaire de commande.

Lorsque l’autorité de certification renvoie le certificat émis, finalisez l’association avec :

certreq -accept certnew.cer

Cette commande lie le certificat émis à la clé privée en attente dans le magasin, après quoi le certificat devient disponible pour tout service Windows en ayant besoin.

Générer une CSR sous Windows avec OpenSSL

Windows ne fournit pas OpenSSL par défaut, mais une version Windows maintenue est disponible auprès de Shining Light Productions. Le processus OpenSSL est identique à celui sous Linux et produit une clé et une CSR sous forme de deux fichiers distincts, ce qui est utile si vous prévoyez de déployer le certificat sur une plateforme n’utilisant pas le magasin de certificats Windows (par exemple un reverse proxy tiers, Tomcat, ou une application personnalisée).

Installez le package Win64 OpenSSL Light (l’installateur standard suffit pour la création de CSR) et, lorsque l’installation vous le demande, copiez les DLL OpenSSL dans le répertoire bin d’OpenSSL plutôt que dans le dossier système Windows. Ouvrez l’invite de commandes ou PowerShell et vérifiez qu’OpenSSL se trouve dans le PATH :

openssl version

Si la commande n’est pas reconnue, ajoutez le dossier d’installation (généralement C:Program FilesOpenSSL-Win64bin) à votre PATH, ou appelez openssl avec le chemin complet. Générez ensuite la CSR et la clé avec une seule commande :

openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr -subj "/C=US/ST=California/L=San Jose/O=Your Company/CN=www.yourdomain.com" -addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

Le rôle de chaque option :

  • -newkey rsa:2048 crée une nouvelle clé RSA de 2048 bits. Utilisez rsa:4096 pour une clé plus grande si votre politique l’exige.
  • -nodes écrit la clé privée sans phrase de passe afin que le service utilisateur puisse la lire au démarrage sans invite. OpenSSL 3.x a renommé cette option en -noenc ; -nodes fonctionne toujours mais est considérée comme obsolète.
  • -keyout et -out nomment respectivement le fichier de clé et le fichier CSR.
  • -subj fournit le sujet directement afin qu’OpenSSL ne s’arrête pas pour poser des questions interactives.
  • -addext « subjectAltName=… » ajoute la liste SAN. Incluez également le Common Name ici.

OpenSSL 3.x signe la CSR avec SHA-256 par défaut, aucune option de condensé supplémentaire n’est donc nécessaire. Notez la différence d’en-tête : OpenSSL écrit -----BEGIN CERTIFICATE REQUEST-----, tandis que l’assistant MMC et certreq écrivent -----BEGIN NEW CERTIFICATE REQUEST-----. Les deux sont des demandes PKCS #10 ordinaires et toute autorité de certification accepte l’une ou l’autre forme. Traitez le fichier yourdomain.key résultant comme un secret : quiconque le possède peut usurper le certificat.

Vérifier la CSR avant de la soumettre

Vérifiez le Common Name, les entrées SAN, la taille de la clé et l’algorithme de signature avant d’envoyer la demande à votre autorité de certification. Depuis la ligne de commande Windows, certutil permet de lire n’importe quel fichier CSR :

certutil -dump request.csr

Si vous avez installé OpenSSL, la commande équivalente affiche les mêmes informations :

openssl req -noout -text -in request.csr

Vous préférez utiliser un navigateur ? Collez le contenu de la demande dans le décodeur de CSR de SSL Dragon pour relire le sujet, la liste SAN, la taille de la clé et l’algorithme de signature. Vérifiez que le Common Name correspond au nom d’hôte que les clients utiliseront, que chaque nom requis figure bien dans la liste SAN, et que l’algorithme de signature est sha256WithRSAEncryption (ou plus robuste).

Si vous préférez générer la CSR en dehors du serveur, notre générateur de CSR crée une demande (avec SAN) à partir d’un seul formulaire. Le compromis est que la clé privée est générée dans votre navigateur, et non dans le magasin Windows ; ainsi, lorsque l’autorité de certification émet le certificat, vous devez combiner le certificat et la clé dans un fichier .pfx et l’importer via la console de gestion des certificats de votre application.

Questions fréquemment posées

Quelle méthode de CSR Windows dois-je utiliser ?

Si vous sécurisez un service Windows qui lit depuis le magasin de certificats de l’ordinateur local (IIS, ADFS, RDP, RD Gateway, WinRM), utilisez le snap-in MMC ou certreq.exe : tous deux créent la clé au bon endroit afin que le certificat émis soit prêt à être associé. Si vous préparez une CSR pour une plateforme non-Windows, ou si vous souhaitez un fichier de clé séparé que vous pouvez copier sur un serveur Linux ou un appareil tiers, utilisez OpenSSL sous Windows. Le résultat des trois méthodes est la même CSR PKCS #10 acceptée par toutes les autorités de certification publiques.

Dois-je inclure mon adresse e-mail dans le sujet de la CSR ?

Non. La RFC 5280 impose que les nouveaux certificats placent une adresse e-mail dans l’extension Subject Alternative Name en tant que rfc822Name, et non dans le Distinguished Name du sujet. Les autorités de certification publiques peuvent supprimer une valeur d’e-mail du sujet d’un certificat TLS lors de l’émission, l’ajouter ne sert donc à rien pour HTTPS. Laissez le champ Email vide dans l’assistant ou dans le fichier INF.

Où se trouve la clé privée après la création de la CSR sous Windows ?

Avec le snap-in MMC ou certreq.exe, la clé se trouve dans Certificates (Local Computer) > Certificate Enrollment Requests sous forme de demande en attente, et elle est automatiquement associée au certificat émis lorsque vous terminez l’enregistrement. Avec OpenSSL, la clé est le fichier .key écrit à côté de la CSR ; protégez-la comme tout autre secret et sauvegardez-la avant de déployer le certificat.

Puis-je générer une CSR directement avec PowerShell, sans fichier INF ?

PowerShell ne dispose pas de cmdlet natif pour les CSR. New-SelfSignedCertificate crée une paire de clés, mais produit un certificat autosigné complet, et non une CSR qu’une autorité de certification publique peut signer. La méthode prise en charge pour créer une demande depuis PowerShell consiste à rédiger le fichier INF présenté ci-dessus et à appeler certreq.exe dessus (certreq -new request.inf request.csr). Des modules tiers comme PSPKI encapsulent certreq dans une interface plus conviviale, mais l’outil sous-jacent reste certreq.

Que se passe-t-il si j’annule l’assistant ou si je ne soumets jamais la demande ?

La demande en attente et sa clé privée restent dans Certificates (Local Computer) > Certificate Enrollment Requests. Elles ne font rien d’elles-mêmes et ne cassent rien, mais elles s’accumulent avec le temps. Ouvrez le snap-in Certificates MMC, examinez les demandes en attente, et supprimez celles dont vous n’avez plus besoin ; cela supprime également la clé correspondante.

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.