Utiliser express pour créer un framework dans nodejs peut être considéré comme très simple et pratique, mais généralement le serveur http est créé par défaut, ce qui signifie qu'il n'est accessible que via le protocole http. De nos jours, https est devenu une tendance de développement et nous devons suivre la tendance du temps. Dans cet article, nous allons créer un certificat à l'aide d'une méthode auto-signée, puis utiliser le framework express pour créer un serveur https et enfin laisser le navigateur ou le client utiliser le protocole https pour y accéder.
Nous devons d'abord générer le fichier de certificat :
(1) Générez le fichier de clé de clé privée (le chemin ci-dessous indique l'emplacement du chemin du fichier que vous souhaitez enregistrer)
openssl genrsa 1024 > /pathway/private.pem
( 2) Générez la signature du certificat CSR via le fichier de clé privée généré ci-dessus
openssl req -new -key /pathway/private.pem -out csr.pem
(3) Générez le fichier de certificat via le fichier de clé privée ci-dessus et la signature du certificat CSR
openssl x509 -req -days 365 -in csr.pem -signkey /pathway/private.pem -out /pathway/file.crt
générés à ce moment Les trois fichiers sont les suivants :
A ce moment, copiez ces trois fichiers dans le répertoire de votre projet nodejs. Par exemple, je crée un nouveau dossier de certificat directement à la racine du projet. répertoire, puis placez les trois fichiers :
Après avoir terminé les étapes ci-dessus, modifiez le fichier de démarrage du projet. Le fichier de démarrage ici est app.js, ou pour les autres c'est server.js. l'implémentation est la même :
var express = require('express'); // 项目服务端使用express框架 var app = express(); var path = require('path'); var fs = require('fs'); //使用nodejs自带的http、https模块 var http = require('http'); var https = require('https'); //根据项目的路径导入生成的证书文件 var privateKey = fs.readFileSync(path.join(__dirname, './certificate/private.pem'), 'utf8'); var certificate = fs.readFileSync(path.join(__dirname, './certificate/file.crt'), 'utf8'); var credentials = {key: privateKey, cert: certificate}; var httpServer = http.createServer(app); var httpsServer = https.createServer(credentials, app); //可以分别设置http、https的访问端口号 var PORT = 8000; var SSLPORT = 8001; //创建http服务器 httpServer.listen(PORT, function() { console.log('HTTP Server is running on: http://localhost:%s', PORT); }); //创建https服务器 httpsServer.listen(SSLPORT, function() { console.log('HTTPS Server is running on: https://localhost:%s', SSLPORT); }); //可以根据请求判断是http还是https app.get('/', function (req, res) { if(req.protocol === 'https') { res.status(200).send('This is https visit!'); } else { res.status(200).send('This is http visit!'); } });
Une fois l'implémentation du code terminée, pour démarrer le script app.js, vous pouvez utiliser la commande "node app.js" pour démarrer, ou l'exécuter dans d'autres IDE, puis accédez-y dans le navigateur (notez qu'express n'est pas un module intégré du système et doit être installé via npm) :
Vous pouvez voir que nous avons utilisé avec succès https pour accéder à notre serveur, mais le navigateur Chrome affiche un message rouge Non sécurisé. En effet, ce certificat a été créé par nos soins et n'a pas été vérifié par une organisation tierce. Un avertissement apparaîtra donc. Nous présenterons comment demander un certificat certifié dans un prochain blog.
Ouvrez le mode développeur dans le navigateur Chrome et vous pourrez voir les informations de certificat de la page actuelle dans la page Sécurité, comme indiqué ci-dessous :
Cliquez sur "Afficher le certificat" pour voir le certificat Détails :
Développez les détails et vous pourrez voir les différentes informations de certificat que nous avons saisies lors de la création du certificat.
Parallèlement, nous pouvons également utiliser Postman pour simuler les demandes des clients (dans le développement réel, les étudiants du serveur peuvent envoyer des certificats aux étudiants clients, et la communication https peut être réalisée après une simple configuration) :
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!