bg-tutorials

Comment générer un CSR sur Apache

Ce tutoriel vous montre comment générer une CSR sur Apache à l’aide de la ligne de commande OpenSSL sur le même serveur qui exécute Apache HTTP Server. Vous créerez deux fichiers en une seule commande : une nouvelle clé privée et la CSR (Certificate Signing Request) correspondante que vous soumettrez à votre autorité de certification.

Les étapes ci-dessous fonctionnent sur toutes les distributions Linux modernes hébergeant Apache (Ubuntu, Debian, RHEL, AlmaLinux, Rocky Linux, Amazon Linux 2023), car chacune est fournie avec OpenSSL 1.1.1 ou OpenSSL 3.x. Les deux versions signent la requête avec SHA-256 par défaut, vous n’avez donc pas besoin d’ajouter d’indicateur de digest. La même commande fonctionne également sur FreeBSD et sur macOS avec Apache.

Étape 1 : Connectez-vous à votre serveur Apache

Ouvrez Terminal sur macOS ou Linux, ou PowerShell ou Windows Terminal sur Windows, et connectez-vous au serveur via SSH. Remplacez le nom d’utilisateur et l’hôte par les vôtres :

ssh your-user@your-apache-server

Générez la CSR sur le même serveur qui hébergera le certificat. La clé privée est créée à côté de la CSR et doit rester sur ce serveur. Exécuter la commande sur votre ordinateur portable, puis copier la clé ailleurs va à l’encontre du but recherché. Vous pouvez aussi vouloir effectuer ce travail dans un répertoire dédié que vous pourrez retrouver plus tard, par exemple :

sudo mkdir -p /etc/ssl/yourdomain
cd /etc/ssl/yourdomain

Étape 2 : Générez la clé privée et la CSR

Si vous avez déjà généré votre CSR avec un autre outil, passez directement à l’installation du certificat sur Apache.

Exécutez la commande OpenSSL suivante. Elle crée une clé RSA de 2048 bits et une CSR en une seule étape, avec le sujet et les Subject Alternative Names (SANs) fournis directement en ligne afin qu’OpenSSL ne s’arrête pas pour poser des questions :

openssl req -new -newkey rsa:2048 -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

Ce que fait chaque partie :

  • -newkey rsa:2048 génère une nouvelle clé RSA de 2048 bits. 2048 bits est le minimum actuel pour les certificats publics ; vous pouvez utiliser rsa:4096 pour une clé plus grande, ou passer à ECDSA (voir ci-dessous).
  • -nodes laisse la clé privée non chiffrée afin qu’Apache puisse la lire au démarrage sans demande de phrase secrète.
  • -keyout et -out nomment les fichiers de la clé privée et de la CSR.
  • -subj fournit le sujet du certificat. Renseignez ici le vrai nom de votre entreprise, votre état et votre ville, et non les valeurs d’exemple. CN (Common Name) correspond à votre domaine principal.
  • -addext « subjectAltName=… » liste chaque nom d’hôte que le certificat doit couvrir. Les autorités de certification publiques valident par rapport à la liste des SAN, incluez donc également le Common Name ici.

Remplacez yourdomain.com par votre domaine réel partout. Pour couvrir des noms d’hôte supplémentaires, ajoutez-les à la liste des SAN séparés par des virgules, par exemple DNS:api.yourdomain.com. Pour un certificat wildcard, incluez à la fois le wildcard et le domaine nu : DNS:*.yourdomain.com,DNS:yourdomain.com. N’utilisez que des caractères alphanumériques dans les champs du sujet, et utilisez le code pays officiel à deux lettres pour le champ C.

Si vous préférez une clé ECDSA (plus petite et plus rapide, avec le P-256 largement pris en charge), générez la clé et la CSR de cette façon à la place :

openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

Si vous préférez répondre aux invites un champ à la fois, exécutez openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr sans -subj ni -addext. OpenSSL demandera chaque champ à tour de rôle. Lorsque cela se produit :

  • Country Name (C) : le code ISO à deux lettres de votre pays, par exemple US ou GB. Pour les certificats Business Validation ou Extended Validation, il doit s’agir du pays officiel d’enregistrement de votre organisation.
  • State or Province Name (ST) : le nom complet, par exemple California. Ne l’abrégez pas.
  • Locality Name (L) : la ville, par exemple San Francisco.
  • Organization Name (O) : le nom officiel enregistré de votre entreprise, par exemple GPI Holding LLC. Pour les certificats Domain Validation, vous pouvez saisir NA.
  • Organizational Unit Name (OU) : ce champ est obsolète et ignoré par les autorités de certification publiques. Laissez-le vide en appuyant sur Entrée.
  • Common Name (CN) : le nom de domaine pleinement qualifié pour lequel le certificat est destiné, par exemple www.yourdomain.com. Pour un wildcard, utilisez *.yourdomain.com.
  • Email Address : facultatif et non utilisé par les autorités de certification publiques. Vous pouvez le laisser vide.
  • A challenge password et An optional company name : ce sont tous deux des attributs obsolètes que les autorités de certification publiques ignorent. Laissez-les vides.

Sans l’indicateur -addext, la CSR résultante n’aura aucune entrée SAN. Les autorités de certification publiques valident par rapport à la liste des SAN et rejetteront (ou remplaceront silencieusement) une requête qui n’en possède pas, la méthode recommandée est donc la commande combinant -subj et -addext en ligne présentée ci-dessus.

Étape 3 : Localisez vos fichiers

Listez le répertoire courant pour confirmer que les deux fichiers ont bien été créés :

ls

Vous devriez voir deux nouveaux fichiers :

  • yourdomain.key : votre clé privée. Conservez-la sur le serveur, sauvegardez-la de manière sécurisée et ne l’envoyez jamais à quiconque, y compris à l’autorité de certification. Quiconque possède cette clé peut usurper l’identité de votre site.
  • yourdomain.csr : votre Certificate Signing Request. C’est le fichier que vous soumettez au fournisseur SSL.

Restreignez la clé privée afin que seul le propriétaire du fichier puisse la lire :

chmod 600 yourdomain.key

Étape 4 : Vérifiez la CSR (facultatif mais recommandé)

Avant de la soumettre, vérifiez que la CSR contient le bon sujet et les bons SAN, et que sa signature est valide. Cela décode la requête localement avec OpenSSL :

openssl req -noout -text -verify -in yourdomain.csr

Confirmez que la ligne Subject affiche vos informations, que X509v3 Subject Alternative Name liste chaque nom d’hôte attendu, et que la vérification de signature affiche verify OK. L’algorithme de signature doit indiquer sha256WithRSAEncryption (ou ecdsa-with-SHA256 pour une clé ECDSA). Si vous préférez ne pas utiliser la ligne de commande, collez la CSR dans notre décodeur de CSR en ligne pour lire les mêmes champs dans un navigateur.

Étape 5 : Soumettez votre CSR

Pour copier la CSR pour votre commande, affichez son contenu :

cat yourdomain.csr

Vous verrez un bloc de texte comme celui-ci :

-----BEGIN CERTIFICATE REQUEST-----
MIICyzCCAbMCAQAwTDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw...
...(many more lines of base64 characters)...
-----END CERTIFICATE REQUEST-----

Copiez tout le bloc, y compris les lignes —–BEGIN CERTIFICATE REQUEST—– et —–END CERTIFICATE REQUEST—– (chaque marqueur possède cinq traits d’union de chaque côté). Ce bloc entier constitue votre CSR. Collez-le dans le formulaire de commande lors de votre achat, et conservez la clé privée correspondante en place sur le serveur.

Si vous préférez ne pas utiliser la ligne de commande, vous pouvez aussi créer la requête avec notre générateur de CSR en ligne. Notez qu’il génère la clé privée dans votre navigateur, vous devez donc sauvegarder vous-même cette clé et la transférer vers le serveur.

Une fois que votre autorité de certification aura validé la requête, vous recevrez votre certificat. Selon le niveau de validation, cela prend quelques minutes pour une Domain Validation, ou jusqu’à plusieurs jours ouvrables pour une Business Validation et une Extended Validation.

Étape 6 : Installez le certificat sur Apache

Lorsque le certificat arrive, placez le certificat émis (y compris tous les intermédiaires concaténés dans un seul fichier fullchain) et la clé privée sur le serveur, puis pointez Apache vers ceux-ci dans l’hôte virtuel de votre site :

SSLCertificateFile    /etc/ssl/yourdomain/fullchain.crt
SSLCertificateKeyFile /etc/ssl/yourdomain/yourdomain.key

Les versions modernes d’Apache (2.4.8 et ultérieures) lisent le certificat feuille et tous les intermédiaires à partir d’un seul fichier transmis à SSLCertificateFile, il faut donc concaténer votre certificat et le bundle de la CA dans un seul fichier. L’ancienne directive SSLCertificateChainFile est obsolète et ne doit pas être utilisée avec les versions actuelles d’Apache. Testez la configuration avec apachectl configtest et rechargez Apache pour appliquer le changement. Pour la procédure complète, consultez notre guide sur comment installer un certificat SSL sur Apache.

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.