Sécurité

Qu'est-ce qu'un fichier CSR et comment le générer ?

2024-07-02 · Datacampus

Quand on demande un certificat SSL/TLS à une autorité de certification (Let's Encrypt, DigiCert, Sectigo, GlobalSign…), la première chose qu'elle réclame est un fichier CSR. Acronyme peu parlant, concept pourtant simple. On décode.

Définition : c'est quoi un CSR ?

CSR signifie Certificate Signing Request — littéralement « demande de signature de certificat ». C'est un fichier texte, au format PEM (base64), qui contient :

  • Votre clé publique (issue d'une paire clé privée / clé publique générée sur votre serveur) ;
  • Les informations d'identification du titulaire (nom de domaine, organisation, pays, ville…) ;
  • Une signature numérique prouvant que vous détenez la clé privée correspondante.

L'autorité de certification (AC) utilise ce fichier pour émettre un certificat SSL/TLS signé qui prouve que vous contrôlez bien le domaine concerné. Un CSR se reconnaît à ses balises :

-----BEGIN CERTIFICATE REQUEST-----
MIICxTCCAa0CAQAwgYQxCzAJBgNVBAYTAkZSMRIwEAYDVQQIDAlEZXV4LVPA==L3Jl
... (texte base64 sur plusieurs lignes) ...
-----END CERTIFICATE REQUEST-----

Ce que contient un CSR (décodage)

Un CSR encode plusieurs champs, traditionnellement hérités du standard X.509 :

Champ Code Exemple
Common Name CN www.exemple.fr
Organisation O Exemple SAS
Unité organisationnelle OU DSI
Localité L Niort
Région / Province ST Nouvelle-Aquitaine
Pays C FR
Email emailAddress admin@exemple.fr

Depuis que les navigateurs ne tiennent plus compte du CN, le champ vraiment important est la SAN (Subject Alternative Name), qui liste tous les domaines couverts par le certificat : www.exemple.fr, exemple.fr, api.exemple.fr, etc.

Générer un CSR avec OpenSSL (Linux / macOS)

La méthode universelle, disponible sur tout système Unix et Windows (via Git Bash ou WSL).

Commande en une ligne (interactive)

openssl req -new -newkey rsa:2048 -nodes \
  -keyout exemple.fr.key \
  -out exemple.fr.csr

OpenSSL vous demandera interactivement le pays, la région, l'organisation, le Common Name (nom de domaine), etc. Résultat : deux fichiers.

  • exemple.fr.key : votre clé privée. À garder secrète, jamais envoyée à l'AC.
  • exemple.fr.csr : le CSR à soumettre à l'AC.

Commande sans invite (automatisable)

Pratique pour les scripts et le DevOps :

openssl req -new -newkey rsa:2048 -nodes \
  -keyout exemple.fr.key \
  -out exemple.fr.csr \
  -subj "/C=FR/ST=Nouvelle-Aquitaine/L=Niort/O=Exemple SAS/CN=www.exemple.fr"

Générer un CSR avec SAN (plusieurs domaines)

Pour couvrir www.exemple.fr, exemple.fr et api.exemple.fr dans un seul certificat :

openssl req -new -newkey rsa:2048 -nodes \
  -keyout exemple.fr.key \
  -out exemple.fr.csr \
  -subj "/C=FR/O=Exemple SAS/CN=www.exemple.fr" \
  -addext "subjectAltName=DNS:www.exemple.fr,DNS:exemple.fr,DNS:api.exemple.fr"

Générer un CSR avec clé ECDSA (plus moderne)

Les clés ECDSA sont plus courtes et plus performantes que RSA. Recommandé pour les nouveaux projets :

openssl ecparam -genkey -name prime256v1 -out exemple.fr.key
openssl req -new -key exemple.fr.key -out exemple.fr.csr \
  -subj "/C=FR/O=Exemple SAS/CN=www.exemple.fr"

Générer un CSR sous Windows (IIS)

Ouvrir le Gestionnaire des services IIS, aller dans Certificats de serveur, puis cliquer sur Créer une demande de certificat…. Renseigner les champs (nom courant, organisation, pays) et choisir la longueur de clé (2048 bits minimum). IIS génère le fichier CSR et stocke la clé privée en interne.

Vérifier le contenu d'un CSR avant de l'envoyer

Toujours vérifier le CSR avant de le soumettre à l'AC. Une erreur dans le nom de domaine = certificat inutilisable.

openssl req -in exemple.fr.csr -noout -text

Cette commande décode le CSR et affiche : le Subject complet, la taille de clé, l'algorithme de signature, et les SAN. Vérifiez que tout est cohérent avant d'envoyer.

Bonnes pratiques

Générez la clé sur le serveur

Ne jamais générer la clé privée sur votre poste local pour la transférer ensuite. La clé ne doit jamais quitter le serveur qui l'utilisera.

Taille de clé minimale

2048 bits pour RSA, 256 bits pour ECDSA (prime256v1). Les clés 1024 bits RSA sont obsolètes et refusées par les AC.

Protégez la clé privée

Permissions chmod 600 sur Linux, accès restreint sur Windows. Une clé privée exposée = certificat compromis, à révoquer immédiatement.

Gardez la clé, recréez le CSR

À chaque renouvellement, vous pouvez réutiliser la même clé privée. Mais générer une nouvelle paire est plus sûr (rotation de clés).

Et Let's Encrypt dans tout ça ?

Avec Let's Encrypt et son client certbot, vous n'avez pas besoin de générer manuellement un CSR. Le client le fait automatiquement à chaque demande ou renouvellement de certificat. C'est l'un des grands avantages de l'automatisation ACME.

Mais comprendre ce qu'est un CSR reste utile : pour déboguer un problème, pour les certificats OV/EV payants qui passent toujours par un CSR manuel, ou pour les cas où vous devez générer un certificat sur une chaîne d'AC privée.

En résumé

Un CSR, c'est simplement :

  • Un fichier texte qui déclare « je contrôle ce domaine, voici ma clé publique ».
  • Généré avec OpenSSL en une commande, en quelques secondes.
  • Soumis à une autorité de certification qui l'utilise pour émettre votre certificat SSL/TLS.
  • Accompagné d'une clé privée qui doit rester secrète sur votre serveur.

Avec la réduction progressive de la durée de vie des certificats à 47 jours d'ici 2029, automatiser la génération des CSR et le déploiement des certificats n'est plus optionnel. Chez Datacampus, nos serveurs infogérés intègrent déjà ACME/Let's Encrypt par défaut : zéro configuration, zéro renouvellement manuel, jamais d'expiration oubliée.

Hébergement souverain, éco-responsable et infogéré

Serveurs en France, énergie renouvelable, support humain. Découvrez ce que Datacampus peut faire pour vous.

Découvrir nos solutions Nous contacter

Articles sur le même sujet

← Retour au blog