回答:
Expressのドキュメントと、https.createServerのノードのドキュメントを参照してください(これは、Expressが使用することをお勧めします)。
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
createServer
in の定義を見てみましょうconnect.js
(expressは単にconnectから継承します)。正しいシグネチャを持つ関数を返すことがわかります。connect()
は単にのエイリアスでconnect.createServer()
あり、したがってエイリアスでもありますexpress()
(これにより、追加の初期化が行われる可能性がありますが、結果は要求ハンドラとしての使用に適切な関数です)。
app
は、定義されています。この答えは満足です。
次のボイラープレートコードで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");
});
これは、Express 4.0で使用できるコードです。
Express 4.0は3.0やその他のものとは大きく異なります。
4.0 / bin / wwwファイルがあり、ここにhttpsを追加します。
「npm start」は、Express 4.0サーバーを起動する標準的な方法です。
readFileSync()関数は__dirnameを使用して現在のディレクトリを取得する必要があります
require()は./を使用し、現在のディレクトリを参照します。
まず、/ 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);