Web/Node.js

Node.js HTTPS 서버 작동하기

_sparrow 2020. 7. 4. 09:00
반응형

SSL 인증서를 받고 HTTPS로 express 서버 구동

 

기존 코드(http)

import express from 'express';

const app = express();

server = app.listen(3000, () => console.log('port 3000 Server On'));

 

HTTPS 적용 코드

import express from 'express';
import https from 'https';
import fs from 'fs';
import config from './conf/config';

const app = express();

const server = https.createServer({
    key: fs.readFileSync(keyFile,"utf-8"),
    cert: fs.readFileSync(certFile,"utf-8"),
},app);

server.listen(3000, () => console.log('port 3000 Server On'));

 

 

let's encrypt SSL 인증서 key와 cert파일 위치 찾기

# su

# cd /etc/letsencrypt/live/도메인명

도메인명 디렉터리 내부의 privkey.pem cert.pem 파일을 key와 cert 파일 이름에 작성해주면 된다.

 

 

별개로 리버스 프록시를 사용할 때는 https로 express서버를 동작하지 않아도 된다.

SSL 인증서를 받았다면 리버스프록시로 https 적용되기 때문이다. Http로 구동해도 된다.

 

참고

 

 

리버스프록시를 안 쓴다면 서버 구동하는 포트로 접근해야 한다

ex) localhost:3000

 

 

Nginx 설정

$ sudo vi /etc/nginx/conf.d/virtual.conf

server {
    server_name  도메인주소;
    listen 443;
    
    ssl                  on;
    ssl_certificate      /etc/letsencrypt/live/도메인주소/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/도메인주소/privkey.pem;
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP;
    ssl_prefer_server_ciphers   on;

    # 리버스프록시 설정
    # location / {
    #     proxy_set_header X-Real-IP $remote_addr;
    #     proxy_set_header HOST $http_host;
    #     proxy_set_header X-NginX-Proxy true;
    #     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 
 		(proxy_pass 코드작성 X)
    #     proxy_redirect off;
    # }
}

 

반응형