Saya mencoba membuat HTTPS bekerja pada express.js untuk node, dan saya tidak bisa mengetahuinya.
Ini app.js
kode saya .
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);
Ketika saya menjalankannya, sepertinya hanya menanggapi permintaan HTTP.
Saya menulis node.js
aplikasi HTTPS berbasis vanilla sederhana :
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);
Dan ketika saya menjalankan aplikasi ini, itu tidak merespon permintaan HTTPS. Perhatikan bahwa saya tidak berpikir toString () pada hasil fs penting, karena saya telah menggunakan kombinasi keduanya dan masih tidak ada es bueno.
Sunting untuk menambahkan:
Untuk sistem produksi, Anda mungkin lebih baik menggunakan Nginx atau HAProxy untuk permintaan proxy ke aplikasi nodejs Anda. Anda dapat mengatur nginx untuk menangani permintaan ssl dan hanya berbicara http ke app.js. simpul Anda
EDIT TO ADD (4/6/2015)
Untuk sistem yang menggunakan AWS, Anda lebih baik menggunakan EC2 Elastic Load Balancers untuk menangani Termination SSL, dan memungkinkan lalu lintas HTTP reguler ke server web EC2 Anda. Untuk keamanan lebih lanjut, atur grup keamanan Anda sedemikian rupa sehingga hanya ELB yang diizinkan mengirim lalu lintas HTTP ke mesin virtual EC2, yang akan mencegah lalu lintas HTTP tidak terenkripsi eksternal mengenai mesin Anda.