bg-tutorials

Comment installer un certificat SSL sur Node.js

Dans ce tutoriel, vous apprendrez comment installer un certificat SSL sur Node.js en utilisant le module intégré https. Contrairement à un serveur web comme Apache ou Nginx, Node.js charge votre certificat, votre clé privée et votre chaîne CA directement en JavaScript, donc l’« installation » se déroule au sein du code de votre application.

Générer un code CSR dans Node.js

Si vous n’avez pas encore fait votre demande de certificat SSL, vous devez d’abord générer une CSR (Certificate Signing Request). La CSR est un petit bloc de texte encodé qui contient vos coordonnées et votre clé publique, et vous la soumettez à l’autorité de certification lors de votre commande. Vous avez deux options :

Soumettez la CSR à l’autorité de certification lors de votre commande. Une fois que la CA l’a validée et a émis votre certificat SSL, poursuivez avec l’installation ci-dessous.

Installer un certificat SSL sur Node.js

Étape 1 : Préparer vos fichiers de certificat

Après la validation, l’autorité de certification vous envoie les fichiers du certificat par e-mail. Extrayez l’archive. Vous devriez avoir :

  • votredomaine.crt, votre certificat de domaine principal.
  • votredomaine.ca-bundle, les certificats intermédiaires (et racine) qui composent le CA bundle.
  • votredomaine.key, la clé privée que vous avez générée avec la CSR.

Les navigateurs doivent recevoir la chaîne intermédiaire, et pas seulement votre certificat de domaine, sinon certains clients rejetteront la connexion. La méthode la plus propre pour servir la chaîne dans Node.js consiste à combiner votre certificat et votre CA bundle en un seul fichier chaîne complète :

cat yourdomain.crt yourdomain.ca-bundle > fullchain.crt

Placez les fichiers fullchain.crt et votredomaine.key dans un endroit où votre application peut les lire, et veillez à ce que la clé privée ne soit lisible que par l’utilisateur qui exécute Node.js.

Étape 2 : Créer un serveur HTTPS dans Node.js

Créez un fichier de serveur. Pour cette démonstration, nous l’appelons https_server.js, mais vous pouvez utiliser n’importe quel nom de fichier. L’exemple ci-dessous utilise CommonJS (require), qui fonctionne sur toutes les versions de Node.js prises en charge. Remplacez les chemins en gras par les vôtres :

const https = require('https');
const fs = require('fs');

const options = {
  key: fs.readFileSync('/path/to/private.key'),
  cert: fs.readFileSync('/path/to/fullchain.crt'),
  // Recommended TLS hardening (2026): never negotiate below TLS 1.2
  minVersion: 'TLSv1.2'
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);

Vous devez remplacer les parties en gras par vos propres informations :

  • /path/to/private.key : le chemin complet vers votre fichier de clé privée.
  • /path/to/fullchain.crt : le chemin complet vers le fichier de chaîne complète que vous avez créé à l’étape 1.

Remarque sur le port : HTTPS utilise par défaut le port 443. La liaison à ce port nécessite des privilèges élevés, donc derrière un reverse proxy ou en développement, vous préférerez peut-être un port élevé tel que 8443. Il suffit alors de modifier la valeur transmise à listen().

Vous préférez les modules ES ? Si votre projet utilise "type": "module" dans package.json (ou un fichier .mjs), utilisez plutôt la syntaxe import. Les options TLS sont identiques :

import https from 'node:https';
import fs from 'node:fs';

const options = {
  key: fs.readFileSync('/path/to/private.key'),
  cert: fs.readFileSync('/path/to/fullchain.crt'),
  minVersion: 'TLSv1.2'
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);

Alternative : transmettre la chaîne avec l’option ca. Si vous préférez garder les fichiers séparés plutôt que de créer un fichier de chaîne complète, laissez cert pointer vers votre certificat de domaine et fournissez les intermédiaires via un tableau ca :

const options = {
  key: fs.readFileSync('/path/to/private.key'),
  cert: fs.readFileSync('/path/to/yourdomain.crt'),
  ca: [
    fs.readFileSync('/path/to/intermediate.crt'),
    fs.readFileSync('/path/to/ca_bundle.crt')
  ],
  minVersion: 'TLSv1.2'
};

Vous utilisez Express ? Transmettez votre app Express en tant que gestionnaire de requêtes. Les options du certificat restent exactement les mêmes :

const express = require('express');
const https = require('https');
const fs = require('fs');

const app = express();
app.get('/', (req, res) => res.send('Hello over HTTPS'));

const options = {
  key: fs.readFileSync('/path/to/private.key'),
  cert: fs.readFileSync('/path/to/fullchain.crt'),
  minVersion: 'TLSv1.2'
};

https.createServer(options, app).listen(443);

Étape 3 : Démarrer votre serveur HTTPS Node.js

Exécutez la commande suivante pour lancer l’application :

node https_server.js

Votre application diffuse maintenant le trafic via HTTPS. Pour un déploiement en production, exécutez-la sous un gestionnaire de processus (par exemple PM2 ou un service systemd) afin qu’elle redémarre automatiquement et survive aux redémarrages du système.

Étape 4 : Tester votre installation SSL

Testez votre installation SSL pour détecter d’éventuelles erreurs ou vulnérabilités à l’aide de l’un de nos outils SSL Checker. Vous pouvez également vérifier la chaîne depuis la ligne de commande :

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates

Cette commande affiche l’émetteur du certificat et ses dates de validité, confirmant que votre serveur Node.js présente le bon certificat.

Où acheter un certificat SSL pour Node.js ?

SSL Dragon est votre source pour tous vos besoins en matière de SSL. Nous proposons certains des prix les plus bas du marché sur toute notre gamme de produits SSL, et nous nous sommes associés aux meilleures marques SSL du secteur pour une sécurité renforcée et un support dédié. Tous nos certificats SSL sont entièrement compatibles avec les applications Node.js.

Émission rapide, chiffrement robuste, taux de confiance des navigateurs de 99,99 %, support dédié et garantie de remboursement de 25 jours.

Questions fréquemment posées

Comment activer HTTPS dans Node.js ?

Utilisez le module intégré https. Lisez votre clé privée et votre certificat de chaîne complète avec fs.readFileSync(), transmettez-les en tant qu’options key et cert à https.createServer(), puis appelez .listen(443). Node.js gère le handshake TLS pour vous ; il n’y a aucun serveur web distinct à configurer.

Ai-je besoin de l’option ca dans Node.js ?

Vous devez faire servir la chaîne intermédiaire, mais vous n’avez pas nécessairement besoin de l’option ca pour cela. L’approche la plus simple consiste à concaténer votre certificat de domaine et votre CA bundle en un seul fichier de chaîne complète et à faire pointer cert vers celui-ci. Utilisez le tableau ca uniquement si vous préférez conserver le certificat et les intermédiaires dans des fichiers séparés.

Pourquoi mon serveur Node.js n’arrive-t-il pas à se lier au port 443 ?

Sur Linux et macOS, les ports inférieurs à 1024 sont privilégiés. Se lier directement au port 443 nécessite des permissions élevées, c’est pourquoi de nombreuses configurations exécutent Node.js sur un port élevé tel que 8443 derrière un reverse proxy (Nginx ou un répartiteur de charge) qui termine ou transmet le TLS. Pour le développement, modifiez simplement la valeur transmise à listen().

Puis-je utiliser import au lieu de require pour le serveur HTTPS ?

Oui. CommonJS (require) fonctionne sur toutes les versions de Node.js prises en charge, mais si votre projet est configuré comme un module ES (« type »: « module » dans package.json ou un fichier .mjs), vous pouvez utiliser import https from ‘node:https’ à la place. Les options TLS sont identiques dans les deux cas.

Comment vérifier que le certificat SSL fonctionne sur Node.js ?

Ouvrez votre site dans un navigateur et vérifiez la présence du cadenas, exécutez-le via nos outils SSL Checker, ou interrogez-le depuis le terminal avec echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com pour inspecter le certificat présenté par le serveur.

En résumé

Installer un certificat SSL sur Node.js revient à créer un certificat de chaîne complète, à le lire ainsi que votre clé privée avec fs.readFileSync(), à les transmettre à https.createServer() avec minVersion: ‘TLSv1.2’, et à démarrer l’application avec node https_server.js.

Vous avez besoin d’un certificat au préalable ? Parcourez nos certificats SSL.

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.