web-dev-qa-db-ja.com

express.jsサーバーのSSL証明書を設定するにはどうすればよいですか?

以前、Expressの古いバージョンでは、これを行うことができました。

express.createServer({key:'keyFile', cert:'certFile'});

ただし、Expressの新しいバージョンでは、これは機能しなくなりました。

var app = express();

app.use()を呼び出して証明書を設定する必要がありますか?もしそうならどのように?

119
murvinlai

Expressドキュメント および https.createServerのノードドキュメント (明示的に使用することをお勧めします)を参照してください。

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

https.createServer({
    key: privateKey,
    cert: certificate
}, app).listen(port);

CreateServerの他のオプションは次のとおりです。 http://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener

136
ebohlman

次の定型コードでSSLを機能させることができました。

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

var port = 8000;

var options = {
    key: fs.readFileSync('./ssl/privatekey.pem'),
    cert: fs.readFileSync('./ssl/certificate.pem'),
};

var app = express();

var server = https.createServer(options, app).listen(port, function(){
  console.log("Express server listening on port " + port);
});

app.get('/', function (req, res) {
    res.writeHead(200);
    res.end("hello world\n");
});
94
geoffreak

これは私のworking code for express 4.0

express 4.0は、3.0などとは大きく異なります。

4.0には/ bin/wwwファイルがあります。ここにhttpsを追加します。

「npm start」は、Express 4.0サーバーを起動する標準的な方法です。

readFileSync()関数は__ dirname現在のディレクトリを取得する必要があります

require()use ./現在のディレクトリを参照します。

最初に/ binフォルダの下にprivate.keyとpublic.certファイルを置きます。これはWWWファイルと同じフォルダです

そのようなディレクトリはエラーを見つけませんでした:

  key: fs.readFileSync('../private.key'),

  cert: fs.readFileSync('../public.cert')

エラー、そのようなディレクトリが見つかりません

  key: fs.readFileSync('./private.key'),

  cert: fs.readFileSync('./public.cert')

作業コードは

key: fs.readFileSync(__dirname + '/private.key', 'utf8'),

cert: fs.readFileSync(__dirname + '/public.cert', 'utf8')

完全なhttpsコードは次のとおりです:

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

// readFileSync function must use __dirname get current directory
// require use ./ refer to current directory.

const options = {
   key: fs.readFileSync(__dirname + '/private.key', 'utf8'),
  cert: fs.readFileSync(__dirname + '/public.cert', 'utf8')
};


 // Create HTTPs server.

 var server = https.createServer(options, app);
7
hoogw