409 votes

Comment créer un serveur HTTPS dans Node.js?

Étant donné une clé SSL et un certificat, comment créer un service HTTPS?

531voto

Jacob Marble Points 6121

Le document API Express énonce clairement cela. J'ai ajouté quelques commentaires et un extrait de la documentation HTTPS Node.js :

 var express = require('express');
var https = require('https');
var http = require('http');
var fs = require('fs');

// This line is from the Node.js HTTPS documentation.
var options = {
  key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
  cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};

// Create a service (the app object is just a callback).
var app = express();

// Create an HTTP service.
http.createServer(app).listen(80);
// Create an HTTPS service identical to the HTTP service.
https.createServer(options, app).listen(443);
 

171voto

hvgotcodes Points 55375

J'ai trouvé cet exemple. Il a quelques mois, mais ça pourrait être bien:

http://www.silassewell.com/blog/2010/06/03/node-js-https-ssl-server-example/

Directement de cette source

 const crypto = require('crypto'),
  fs = require("fs"),
  http = require("http");

var privateKey = fs.readFileSync('privatekey.pem').toString();
var certificate = fs.readFileSync('certificate.pem').toString();

var credentials = crypto.createCredentials({key: privateKey, cert: certificate});

var handler = function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
};

var server = http.createServer();
server.setSecure(credentials);
server.addListener("request", handler);
server.listen(8000);
 

91voto

pkyeck Points 6158

J'ai trouvé cette question en recherchant "node https" mais l'exemple dans la réponse acceptée est très ancien - tiré des docs de la version actuelle du noeud (v0.10), il devrait ressembler à ceci:

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

var options = {
  key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
  cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};

https.createServer(options, function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}).listen(8000);
 

49voto

nu1silva Points 349

Les réponses ci-dessus sont bonnes, mais avec Express et le noeud cela fonctionnera bien.

Depuis express créer l'application pour vous, je vais passer ici.

 var express = require('express')
  , fs = require('fs')
  , routes = require('./routes');

var privateKey = fs.readFileSync('cert/key.pem').toString();
var certificate = fs.readFileSync('cert/certificate.pem').toString();  

// To enable HTTPS
var app = module.exports = express.createServer({key: privateKey, cert: certificate});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X