SORU
31 Temmuz 2012, Salı


Etkinleştirme express.js üzerinde HTTPS

HTTPS düğüm için express.js üzerinde çalışan almak için çalışıyorum, ve bunu çözemiyorum.

Bu app.js benim kodudur.

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);

Ben çalıştırdığınızda, yalnızca HTTP istekleri için cevap gibi görünüyor.

node.js temel basit vanilya HTTPS uygulaması yazdı:

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);

Ve bu uygulamayı çalıştırmak zaman, buyokHTTPS istekleri yanıt. Bu olabilirdi sanmıyorum not() fs sonucu her ikisinin kombinasyonu ve no es bueno hala kullanmadım gibi konularda.


DÜZENLEMEK İÇİN:

Üretim sistemlerinde, muhtemelen Nginx kullanarak veya nodejs uygulaması proxy istekleri için daha iyi HAProxy. Kurulum ssl istekleri ve sadece düğüm senin app.js http konuşmak nginx.

EKLEMEK İÇİN (4/6/2015) DÜZENLEYİN

BÖLÜM kullanarak sistemler için SSL Sonlandırma kolu ve EC2 web sunucuları için normal HTTP trafiğine izin vermek için EC2 Elastik Yük Dengeleyici kullanarak daha iyi. Daha fazla güvenlik kurulumu için tek ELB gibi güvenlik grubu makineleri isabet harici şifrelenmemiş HTTP trafiği engelleyecek olan EC2 örnekleri, HTTP trafik göndermek için izin verilir.


CEVAP
31 Temmuz 2012, Salı


Eğer yeni sürüm açık varsa (3.x) sözdizimi kullanmanız gerekir:

var fs = require('fs');
var http = require('http');
var https = require('https');
var privateKey  = fs.readFileSync('sslcert/server.key', 'utf8');
var certificate = fs.readFileSync('sslcert/server.crt', 'utf8');

var credentials = {key: privateKey, cert: certificate};
var express = require('express');
var app = express();

// your express configuration here

var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);

httpServer.listen(80);
httpsServer.listen(443);

Bu şekilde sunucu/https yerel http express katman sağlar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ash100HD

    Ash100HD

    29 EKİM 2011
  • Grace Su

    Grace Su

    6 Ocak 2006
  • Klemens Torggler

    Klemens Torg

    11 Mart 2008