Avec le développement continu de la technologie et des applications Internet, les problèmes de sécurité attirent de plus en plus l'attention. La sécurité des transmissions est devenue une nécessité pour les applications réseau modernes. Dans ce contexte, le HTTPS (Hypertext Transfer Protocol over Secure Socket Layer) est devenu la principale méthode de transmission de données sur Internet. Il peut réaliser une transmission cryptée de données via le protocole SSL/TSL, améliorant considérablement la sécurité de la transmission des données.
Lorsque vous utilisez HTTPS, vous devez utiliser un certificat côté serveur. Le certificat peut être utilisé pour prouver l'identité du serveur et assurer la sécurité lors de la transmission des informations. Dans cet article, nous expliquerons comment créer un serveur HTTPS avec un certificat local dans Node.js.
Comment générer un certificat local :
Tout d'abord, nous avons besoin de certificats de confiance pour établir une connexion HTTPS. Le certificat racine de chaque système d'exploitation peut être différent. Comment générer un certificat auto-signé ? Utilisez simplement l'outil openssl.
Nous prenons le système Linux comme exemple et exécutons la commande suivante :
openssl genrsa -out private.key 1024
openssl req -new -key private.key -out cert.csr
openssl x509 -req -in cert. csr -signkey private.key -out cert.crt
Une fois les commandes ci-dessus exécutées dans l'ordre, trois fichiers seront générés : private.key, cert.csr et cert.crt.
Parmi eux, private.key est la clé privée et cert.crt est le certificat. cert.csr est la demande de signature de certificat et ce fichier peut être ignoré.
Ensuite, nous pouvons utiliser ces fichiers pour créer un serveur HTTPS.
Node.js utilise HTTPS pour créer un serveur local :
Tout d'abord, nous devons créer un fichier serveur Node.js, tel que app.js. Dans ce fichier, nous devons introduire les modules https et fs :
const https = require('https');
const fs = require('fs');
Ensuite, nous devons définir quelques paramètres, dans In dans cet exemple, nous devons définir le fichier de certificat et le numéro de port :
const options = {
key: fs.readFileSync('private.key'),
cert: fs.readFileSync('cert.crt')
};
const port = 3000;
Parmi eux, key et cert sont les fichiers de certificat générés ci-dessus.
Ensuite, nous devons créer un serveur HTTPS et écouter le numéro de port :
const server = https.createServer(options, (req, res) => {
res.writeHead(200);
res.end ('hello world
');
});
server.listen(port, () => {
console.log(server listening on port ${port}
);
});
Maintenant, nous pouvons exécuter le serveur Node.js fichier, dans Exécutez la commande suivante dans la ligne de commande :
$ node app.js
Lorsque nous entrons https://localhost:3000 dans le navigateur, le navigateur constatera que le site Web n'est pas sûr car notre certificat est actuellement un certificat auto-signé. Le navigateur ne considère pas qu'il s'agit d'un certificat de confiance.
Pour que le navigateur fasse confiance à ce certificat, nous devons importer le certificat dans le navigateur ou acheter un certificat officiel.
Pour importer le certificat, nous pouvons ouvrir le site Web https://localhost:3000 dans Chrome, cliquer sur le bouton Avancé, puis cliquer sur le lien "Continuer vers localhost (dangereux)", puis faire un clic droit sur le site Web et sélectionner " Afficher le certificat", puis sur la page des détails du certificat, cliquez sur Copier la clé publique. Ensuite, ouvrez chrome://settings/certificates dans le navigateur, puis cliquez sur le bouton « Autres actions » > « Importer », dans la fenêtre contextuelle « Assistant d'importation de certificat », sélectionnez « Importer le certificat depuis le presse-papiers », puis appuyez sur Suivez simplement les instructions.
De cette façon, nous pouvons construire un serveur HTTPS localement. Dans les applications pratiques, des certificats formels doivent être utilisés pour garantir la sécurité des communications.
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!