Aller au contenu

Générer une CSR sur Apache, Nginx et Heroku avec OpenSSL

Pour activer votre certificat, vous avez besoin d’un code CSR.

Une CSR (Certificate Signing Request, ou demande de signature de certificat) est un bloc de texte encodé que vous soumettez à une autorité de certification lorsque vous demandez un certificat SSL.

Elle est généralement générée sur le serveur où le certificat sera installé et doit contenir des informations sur votre site web et votre entreprise, qui seront ensuite encodées dans le certificat.

Informations de la CSR

Algorithme de clé

Génération d’une clé RSA

Génération d’une clé ECC

Après la génération de la CSR

Erreurs possibles

Informations de la CSR

Veillez à remplir correctement les détails du code CSR. Cela devrait accélérer l’obtention du certificat SSL. De plus, le processus de validation des certificats SSL OV et EV exige que les informations sur l’entreprise soient saisies avec exactitude.

Common Name (le nom de domaine pour lequel le certificat sera émis)

Par exemple - example.com

Remarque ! Pour les certificats Wildcard, le Common Name doit être précédé d’un astérisque (par ex. *.example.com).

Country (code à deux lettres)

Country (C) – le code à deux lettres du pays où se trouve l’entreprise ou le demandeur (par exemple GB pour la Grande-Bretagne ou US pour les États-Unis ; vous pouvez vérifier le code de votre pays ici.)

State (ou province)

State (S) – l’État, le comté ou la région où se trouve l’entreprise ou le demandeur (par ex. California).

Locality (ou ville)

Locality (L) – la ville où se trouve l’entreprise ou le demandeur (par ex. Los Angeles). Ce paramètre ne doit pas être abrégé.

Organization (le nom de votre entreprise. Vous pouvez indiquer “NA” ici pour tout certificat à validation de domaine)

Organization (O) – le nom officiellement enregistré de l’organisation qui demande le certificat (par ex. Ruachost Inc.). Pour les certificats à validation d’organisation (OV) et à validation étendue (EV), les autorités de certification vérifieront l’organisation indiquée. Pour les certificats SSL à validation de domaine (DV), ce champ n’est pas déterminant et ces informations ne figureront pas sur le certificat émis ; il faut toutefois au moins le remplir avec “NA”.

Organizational Unit (service. Vous pouvez indiquer “NA” ici pour tout certificat à validation de domaine)

Organization Unit (OU) – le nom du service ou de la division au sein de l’organisation indiquée (par ex. SSL Support).

Email address (indiquez ici une adresse e-mail valide)

Email Address – une adresse e-mail de l’entreprise ou du demandeur. Ce champ est facultatif.

Remarque ! Cette adresse e-mail ne sera pas utilisée pendant le processus de vérification, sauf si une erreur est trouvée dans les informations soumises. Cependant, elle sera considérée comme le contact administratif, sauf si vous la modifiez pendant le processus d’activation. Le certificat SSL sera envoyé à l’adresse e-mail du contact administratif une fois activé.

Challenge Password et Optional Company Name - n’utilisez pas de mot de passe de challenge et laissez également vide le champ Optional Company Name. Ces valeurs sont désormais obsolètes et peuvent poser problème lors de l’obtention du certificat SSL.

Algorithme de clé

En général, OpenSSL est utilisé pour générer les CSR sur les serveurs web Linux (Apache ou Nginx). Ainsi, si le serveur web par défaut est installé, l’utilisation d’OpenSSL ne devrait poser aucun problème, car il est installé par défaut sur ces serveurs web.

Vous devez maintenant choisir l’algorithme de clé que vous souhaitez utiliser.

L’algorithme de clé RSA est aujourd’hui le plus couramment utilisé. Cliquez ici pour plus de détails.

L’algorithme de clé ECDSA est une technologie moderne utilisée pour créer des certificats ECC. Les détails sont ici.

Configuration SSH

La CSR sera générée côté serveur, vous devrez donc vous y connecter via SSH.

SSH, aussi appelé Secure Shell ou Secure Socket Shell, est un protocole réseau qui offre aux utilisateurs, en particulier aux administrateurs système, un moyen sécurisé d’accéder à un ordinateur via un réseau non sécurisé.

Pour vous connecter à votre serveur via SSH, vous aurez besoin de l’adresse IP, du nom d’utilisateur, du mot de passe et d’un client SSH installé (n’importe lequel convient, par exemple : ZOC Terminal ; PuTTY ; OpenSSH ; MobaXterm ; SecureCRT).

L’adresse IP, le nom d’utilisateur et le mot de passe peuvent être obtenus auprès de votre hébergeur.

Emplacement des fichiers

Nous vous recommandons de créer un dossier pour stocker les fichiers SSL en toute sécurité. Ce dossier peut aussi servir à exécuter les commandes de génération de la CSR.

Lorsque vous générez une CSR (fichier .csr), une clé privée (fichier .key) est générée en même temps. Il est essentiel de ne pas perdre la clé privée, car il sera impossible d’en obtenir une autre plus tard. La clé privée correspondant au certificat SSL est nécessaire pour l’installation. Si vous perdez la clé privée, vous devrez générer une nouvelle CSR et recommencer tout le processus.

Ne partagez votre clé privée avec personne. C’est une mauvaise pratique ; elle doit rester privée en permanence. L’une des principales raisons est que l’autorité de certification peut révoquer un certificat si sa clé privée a été compromise.

Vous pouvez aussi créer un dossier SSL dans votre répertoire personnel. Utilisez pour cela la commande suivante :

mkdir ~/ssl

Ensuite, placez-vous dans ce dossier en exécutant :

cd ~/ssl

RSA

L’algorithme RSA est un algorithme de cryptographie asymétrique. Cela signifie essentiellement que deux clés interviennent lors de la communication : la clé publique et la clé privée. L’algorithme de clé RSA est le plus utilisé en sécurité numérique. Vous pouvez consulter cet article pour plus d’informations.

Vous pouvez exécuter les commandes suivantes pour générer la CSR. Nous vous recommandons d’exécuter cette commande dans le dossier où vous stockerez les fichiers SSL, pour éviter toute confusion par la suite.

openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr

Remarque ! Pour éviter toute confusion, nous vous recommandons de remplacer server.key et server.csr par le vrai nom de domaine pour lequel le certificat sera émis. Ils seront soulignés dans les commandes.

Par exemple :

openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain_tld.key -out yourdomain_tld.csr “

Lorsque vous exécutez la commande, il vous est demandé de saisir les valeurs (Common name (CN), Locality (L), State (S), Country (C), Organization (O), Organization Unit (OU), Email Address) dans le terminal. Vous pouvez consulter cette section pour savoir quelles informations saisir.

Avertissement ! Si la commande échoue, consultez cette section ici.

La CSR ne doit pas contenir de caractères tels que ‘?’, ‘@’, ‘#’, ‘$’, ‘%’, ‘^’, ‘&’ et ‘*’, car ils posent problème. Le seul caractère non alphanumérique autorisé est la barre oblique inverse ’'.

Capture d’écran

Il est possible de générer une CSR avec la commande suivante :

openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr -subj “/C=GB/ST=Yorks/L=York/O=My Company Ltd./OU=IT/CN=example.com”

Vous devrez indiquer les informations dans la commande elle-même. Vous pouvez consulter cette section pour connaître les informations à inclure.

Additional Flags in the CSR RSA
To generate a CSR code with the Street address value included, add the 'Subject' ('-subj') tool with the corresponding data to the command as follows:
openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr -subj "/C=GB/ST=Yorks/L=York/O=My Company Ltd./OU=IT/CN=example.com/streetAddress=Example Avenue 1"
The command with the zip code included in the address should look like this:
openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr -subj "/C=US/ST=Example/L=Example/O=Example Inc Ltd./OU=Example/CN=example.com/streetAddress=Example 1/postalCode=123456"
It is also possible to generate a CSR for a Multi-Domain SSL certificate via one line with all SANs (Subject Alternative Names).
openssl req -new -addext "subjectAltName = DNS:additionaldomain1.com,DNS:www.additionaldomain2.com,DNS:www.additionaldomain3.com" -addext "certificatePolicies = 1.2.3.4" -newkey rsa:2048 -keyout -keyout server.key -nodes -out server.csr

ECC

Pour casser une clé ECDSA, il faut résoudre le problème du logarithme discret sur courbe elliptique (ECDLP), et aucun progrès majeur n’a été réalisé à ce jour dans ce sens. Un certificat ECC offre donc une meilleure sécurité et est plus difficile à casser avec les méthodes habituelles de « force brute » des pirates.

Vous pouvez exécuter les commandes suivantes pour générer une CSR. Nous vous recommandons d’exécuter cette commande dans le dossier où vous stockerez les fichiers SSL, pour éviter toute confusion à l’avenir.

Dans la bibliothèque cryptographique OpenSSL, vous pouvez utiliser cet algorithme pour générer le code CSR avec les commandes ci-dessous :

openssl ecparam -genkey -name secp384r1 | openssl ec -out ecc.key

openssl req -new -key ecc.key -out ecc.csr

Remarque ! Vous devez exécuter la première commande avant la seconde, car la CSR sera basée sur la clé générée par la première commande. Vous devez donc vous assurer que le nom du fichier correspond.

Avertissement ! Si la commande échoue, consultez la section ici.

Exemple :

Vous exécutez :

openssl ecparam -genkey -name secp384r1 | openssl ec -out yourdomain.key

Ensuite, la commande suivante sera :

openssl req -new -key yourdomain.key -out ec.csr

Remarque ! Lorsque vous exécutez la seconde commande, il vous est immédiatement demandé de saisir les valeurs (Common name (CN), Locality (L), State (S), Country (C), Organization (O), Organization Unit (OU), Email Address) dans le terminal. Pour savoir quelles informations saisir, consultez cette section.

Remarque ! La CSR ne doit pas contenir de caractères tels que ‘?’, ‘@’, ‘#’, ‘$’, ‘%’, ‘^’, ‘&’ et ‘*’, car ils posent problème. Le seul caractère non alphanumérique utilisable est la barre oblique inverse ’'.

Capture d’écran

Options supplémentaires de la CSR ECC

Il est aussi possible de générer une CSR pour un certificat SSL multidomaine en une seule ligne, avec tous les SAN (Subject Alternative Names, noms alternatifs du sujet).

La commande peut être modifiée avec l’extension -addext san ainsi qu’avec -subj pour obtenir une commande correcte en une seule ligne :

openssl req -new -nodes -newkey ec:<(openssl ecparam -name secp384r1) -keyout bare_ec.key -out bare_ec.csr -subj -addext

Après la génération de la CSR

Une fois votre CSR générée, vous pouvez l’utiliser pour activer votre certificat SSL.

Pour cela, vous devrez copier le code CSR. Pour ce faire, exécutez la commande :

ls

Vous devriez voir la liste des fichiers présents dans le dossier actuel.

Repérez le fichier avec l’extension « .csr » et ouvrez-le avec cette commande :

cat filename.csr

Ici, “filename” doit être remplacé par le nom que vous avez indiqué dans la commande de génération de la CSR.

Le code CSR commence et se termine par les balises suivantes, qui doivent aussi être copiées :

—–BEGIN CERTIFICATE REQUEST—–

—–END CERTIFICATE REQUEST—–

Erreurs possibles

Lorsque vous exécutez les commandes mentionnées précédemment, vous pouvez rencontrer le message d’erreur suivant : “OpenSSL is not recognized as an internal or external command”

Cela peut signifier que la bibliothèque OpenSSL n’a pas été installée ou que le %PATH% indiqué lors de l’installation n’était pas correct.

Vous pouvez vérifier l’installation de la bibliothèque OpenSSL avec cette commande :

dpkg -l ‘openssl*’

Vous devriez obtenir une réponse contenant « ii ». Si la réponse ne contient pas « ii », cela signifie qu’il y a des problèmes avec les bibliothèques OpenSSL. Dans ce cas, vous devrez contacter votre hébergeur ou votre développeur web.

Capture d’écran

Cette page vous a-t-elle aidé ?