NodeJS SSL (OpenSSL)

NodeJS에서 HTTPS로 접근이 가능하도록, 보안을 위해 SSL을 발급하여 서버에 적용하도록 한다.
간단한 적용방법으로 참고하길 바란다.

OpenSSL Install

버전에 맞는 파일 주소 복사

https://www.openssl.org/source/

wget 설치

sudo apt-get install wget

wget 사용하여 OpenSSL 설치파일 다운로드

wget https://www.openssl.org/source/openssl-<버전>.tar.gz

tar 압축 풀기

 tar xvfz openssl1-<버전>.tar.gz

make 설치 (설치 안한경우에 한함)

 sudo apt-get install gcc make

OpenSSL 설치

cd openssl-<버전>/ 
./config shared
make
make install

OpenSSL 발급

Key 발급

openssl genrsa  -out private.key 2048

Country Name (2 letter code) [AU]: 국가 영문 약자
State or Province Name (full name) [Some-State]: 도
Locality Name (eg, city) : 시
Organization Name (eg, company) [Internet Widgits Pty Ltd]:회사명
Organizational Unit Name (eg, section) []: 부서명
Common Name (e.g. server FQDN or YOUR name) []: 서버도메인
Email Address []: SSL 담당 이메일

public.key 발급

openssl rsa -in private.key  -pubout -out public.key

csr 발급

openssl req -new -key private.key -out private.csr

NodeJS SSL

NodeJS Express에서 SSL을 적용하는 코드는 아래와 같다.

const express = require('express');
const fs = require('fs');
const https = require('https');
const http = require('http');
const cors = require('cors');

const app = express();
const http_port = 3000;
const https_port = 443;

app.use(express.json());
app.use(cors({
	origin:'https://DOMAIN'
}));

const options = {
	key: fs.readFileSync('./SSL/private.key'),
	cert: fs.readFileSync('./SSL/private.crt')
};

app.use((err,req,res,next) => {
	console.log(err);
	res.status(404).send("Not Found");
})

http.createServer(app).listen(http_port, ()=>{
	console.log('HTTP Listening Start...')
	
})
https.createServer(options,app).listen(https_port, ()=>{
	console.log('HTTPS Listening Start...\n')
})

! 중요한 정보를 다루는 서비스를 운영하게 된다면 사설이 아닌 공인 SSL을 구매하여 사용하는 것을 권장한다.

Leave a Comment