프로그래밍 언어/HTML,CSS,JS

express.js에서 HTTPS 활성화

Rateye 2021. 7. 2. 10:40
728x90
반응형

질문 : express.js에서 HTTPS 활성화

노드 용 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 요청에 응답을한다. 두 가지 조합을 사용했지만 여전히 es bueno가 없기 때문에 fs 결과의 toString ()이 중요하지 않다고 생각합니다.

추가하려면 수정 :

프로덕션 시스템의 경우 Nginx 또는 HAProxy를 사용하여 nodejs 앱에 대한 요청을 프록시하는 것이 좋습니다. nginx를 설정하여 SSL 요청을 처리하고 노드 app.js에 http를 말하면됩니다.

추가하려면 수정 (2015 년 4 월 6 일)

AWS를 사용하는 시스템의 경우 EC2 Elastic Load Balancer를 사용하여 SSL 종료를 처리하고 EC2 웹 서버에 대한 정기적 인 HTTP 트래픽을 허용하는 것이 좋습니다. 추가 보안을 위해 ELB 만 HTTP 트래픽을 EC2 인스턴스로 보낼 수 있도록 보안 그룹을 설정하면 암호화되지 않은 외부 HTTP 트래픽이 머신에 도달하지 못합니다.

답변

express.js (버전 3부터)에서는 다음 구문을 사용해야합니다.

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(8080);
              httpsServer.listen(8443);
              

그런 식으로 네이티브 http / https 서버에 익스프레스 미들웨어를 제공합니다.

1024 미만의 포트에서 앱을 실행하려면 sudo 명령 (권장하지 않음)을 사용하거나 역방향 프록시 (예 : nginx, haproxy)를 사용해야합니다.

출처 : https://stackoverflow.com/questions/11744975/enabling-https-on-express-js
728x90
반응형