ノードの Express.js で HTTPS を動作させようとしていますが、わかりません。
これは私のapp.js
コードです。
var express = require('express');
var fs = require('fs');
var privateKey = fs.readFileSync('sslcert/server.key');
var certificate = fs.readFileSync('sslcert/server.crt');
var credentials = {key: privateKey, cert: certificate};
var app = express.createServer(credentials);
app.get('/', function(req,res) {
res.send('hello');
});
app.listen(8000);
実行すると、HTTP リクエストにのみ応答するようです。
簡単なバニラnode.js
ベースの HTTPS アプリを作成しました。
var fs = require("fs"),
http = require("https");
var privateKey = fs.readFileSync('sslcert/server.key').toString();
var certificate = fs.readFileSync('sslcert/server.crt').toString();
var credentials = {key: privateKey, cert: certificate};
var server = http.createServer(credentials,function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
});
server.listen(8000);
このアプリを実行すると、HTTPS リクエストに応答します。fs 結果の toString() は重要ではないと思います。両方の組み合わせを使用しましたが、まだ es bueno はありません。
編集して追加:
実稼働システムの場合、おそらく Nginx または HAProxy を使用してリクエストを nodejs アプリにプロキシする方がよいでしょう。nginx をセットアップして、ssl リクエストを処理し、ノード app.js に http を伝えるだけです。
編集して追加 (2015 年 4 月 6 日)
AWS を使用するシステムの場合、EC2 Elastic Load Balancer を使用して SSL ターミネーションを処理し、EC2 Web サーバーへの通常の HTTP トラフィックを許可することをお勧めします。セキュリティを強化するには、ELB のみが HTTP トラフィックを EC2 インスタンスに送信できるようにセキュリティ グループを設定します。これにより、外部の暗号化されていない HTTP トラフィックがマシンに到達するのを防ぐことができます。