Maison > interface Web > js tutoriel > Comment utiliser SSL / TLS avec Node.js

Comment utiliser SSL / TLS avec Node.js

Jennifer Aniston
Libérer: 2025-02-10 13:06:35
original
597 Les gens l'ont consulté

Cet article explique comment sécuriser votre serveur express.js avec HTTPS en utilisant les certificats de crypte, et améliorer davantage la sécurité avec HSTS et les paramètres Diffie-Hellman plus forts.

How to Use SSL/TLS with Node.js

Dans le paysage numérique d'aujourd'hui, HTTPS n'est pas négociable. Il est attendu par les utilisateurs, un facteur de classement Google et les navigateurs mettent activement en évidence les sites qui le manquent. Ce didacticiel montre l'ajout d'un certificat Let's Encrypt à votre application express.js. Cependant, la sécurité côté client est tout aussi vitale; Nous explorerons l'application des connexions cryptées aux serveurs externes, même lorsqu'ils ne sont pas activés par défaut. (Remarque: Pour la configuration SSL proxy inverse Nginx avec une application de nœud, consultez notre pointe rapide, «Configuration de Nginx et SSL avec Node.js».)

Prise des clés:

  • HTTPS est crucial pour la sécurité du site Web en 2020 et au-delà, offrant l'authentification, la confidentialité, la confidentialité et l'intégrité des données. C'est un facteur de classement Google et l'attente des utilisateurs.
  • Node.js par défaut Http, mais le module https permet une communication client sécurisée. Cela nécessite des certificats SSL, facilement obtenus et exempts de Let's Encrypt.
  • CERTBOT SIMPLIFIES LETTONS GÉNÉRATION ET GESTION DE CERTIFICATION, VÉRIFIER L'AUTRENTICTION DU HAPPORT DE CERTIFICATION POUR LES CONNECTIONS CLIENT-SERVERS SÉCURITES.
  • HTTP STRICT TRANSPRORS SECURITY (HSTS), implémenté via le module de nœud de casque, force tout le trafic via HTTPS, atténuation des attaques de rétrogradation du protocole et du détournement des cookies.
  • La sécurité SSL / TLS est renforcée en générant une touche Diffie-Hellman plus longue (2048 bits) pour un échange de clé de serveur amélioré.

https partout:

La norme HTTP / 2 (RFC 7540, mai 2015) oblige le chiffrement, faisant de HTTPS la valeur par défaut. Cela stimule l'adoption de HTTPS. Du point de vue d'un navigateur, atteindre le niveau IP implique ces couches:

  1. Navigateur client
  2. http
  3. ssl / tls
  4. TCP
  5. ip

https est HTTP sur SSL / TLS, héritant des règles HTTP lors de l'ajout: Authentification via des clés et des certificats; Communication cryptée et asymétrique pour la vie privée et la confidentialité; et l'intégrité des données grâce à la transmission de sabotage. Contrairement aux perceptions passées, les frais généraux SSL / TLS sont minimes, même pour les opérations à grande échelle comme Google (moins de 1% de charge CPU et 2% de frais généraux de réseau). Comme l'a déclaré Ilya Grigorik, le seul goulot d'étranglement des performances est insuffisant l'utilisation de HTTPS.

TLS 1.3 est la dernière version, succédant SSL 3.0 (mais pas interopérable). Il utilise trois canaux cryptés: les chaînes de certificat, la cryptographie de clé publique pour l'échange de clés et la cryptographie symétrique pour le transfert de données. SHA2 ou des algorithmes de hachage plus forts sont recommandés (SHA1 est obsolète). La croissance des données vialise la demande des utilisateurs de carburant pour une sécurité en ligne améliorée. L'extension du navigateur HTTPS Everywhere de l'EFF applique le cryptage dans la mesure du possible, y compris les demandes de réécriture de sites avec une prise en charge HTTPS partielle ou un blocage entièrement HTTP.

How to Use SSL/TLS with Node.js

Communication de base:

La validation du certificat implique la vérification de la signature, de la date d'expiration, de la chaîne de racines de confiance et de l'état de révocation. Certificats d'émission de certificats de confiance (CAS); Le compromis d'un CA révoque tous ses certificats. La séquence de poignée de main HTTPS: initialisation du client, certificat et message d'échange de clés à partir du serveur, de l'échange de clés du client et de la spécification de chiffre, de la confirmation du serveur et de la fermeture de la poignée.

How to Use SSL/TLS with Node.js

Cette séquence est indépendante de HTTP; HTTPS n'a modifié la manutention des socket. Les demandes HTTP restent, mais le socket crypte le contenu (en-têtes et corps).

Implémentation https dans express.js:

Node.js utilise le module https pour la communication sécurisée. Son utilisation reflète le module http:

const https = require("https"),
  fs = require("fs");

const options = {
  key: fs.readFileSync("/srv/www/keys/my-site-key.pem"),
  cert: fs.readFileSync("/srv/www/keys/chain.pem")
};

const app = express();

app.use((req, res) => {
  res.writeHead(200);
  res.end("hello world\n");
});

app.listen(8000);

https.createServer(options, app).listen(8080);
Copier après la connexion

remplacer /srv/www/keys/my-site-key.pem et /srv/www/keys/chain.pem par vos chemins de certificat générés (expliqués ci-dessous).

Génération de certificat avec certificat:

CERTBOT ATTALATS, cryptant la génération et la gestion des certificats. Installer CERTBOT (les instructions varient selon le système d'exploitation; cet exemple utilise Ubuntu):

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
Copier après la connexion

Le plugin certonly --webroot simplifie la génération et la vérification des certificats. Run:

certbot certonly --webroot -w /var/www/example/ -d www.example.com -d example.com
Copier après la connexion

Fournissez votre adresse e-mail. La sortie affiche des chemins vers votre clé privée et vos fichiers de certificat; Utilisez-les dans l'objet options ci-dessus.

Améliorations de sécurité:

  • HTTP STRICT TRANSPROST Security (HSTS): Utilisez le middleware du casque:
const helmet = require("helmet");
// ...
app.use(helmet());
Copier après la connexion
  • Paramètres Diffie-Hellman plus forts: Générez une clé DH 2048 bits en utilisant OpenSSL:
openssl dhparam -out /var/www/example/sslcert/dh-strong.pem 2048
Copier après la connexion

Ajouter dhparam à l'objet options:

const options = {
  // ...
  dhparam: fs.readFileSync("/var/www/example/sslcert/dh-strong.pem")
};
Copier après la connexion

Conclusion:

https est essentiel. Node.js propose des options SSL / TLS robustes pour les applications Web sécurisées. Saisissons la gestion des certificats, tandis que les HST et les paramètres DH plus forts améliorent encore la sécurité.

La section FAQ a été omise par la concision, mais les informations fournies couvrent les aspects principaux du texte d'origine.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal