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을 구매하여 사용하는 것을 권장한다.