HTTPS 서버 구현 : 실습
기초설치
macOS
macOS 사용자의 경우, Homebrew를 통해 mkcert를 설치할 수 있습니다.
$ brew install mkcert
# firefox를 사용할 경우 필요에 따라 설치해주세요.
$ brew install nss
[인증서 생성]
먼저 다음 명령어를 통해 로컬을 인증된 발급기관으로 추가해야 합니다.
$ mkcert -install
다음은 로컬 환경에 대한 인증서를 만들어야 합니다. localhost로 대표되는 로컬 환경에 대한 인증서를 만들려면 다음 명령어를 입력해야 합니다.
$ mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1
이제 옵션으로 추가한 localhost, 127.0.0.1(IPv4), ::1(IPv6)에서 사용할 수 있는 인증서가 완성되었습니다. cert.pem, key.pem 이라는 파일이 생성된 것을 확인할 수 있습니다.
express.js 이용
만약 express.js 를 사용하는 경우, 다음과 같이 https.createServer의 두 번째 파라미터에 들어갈 callback 함수를 Express 미들웨어로 교체하면 그만입니다!
const https = require('https');
const fs = require('fs');
const express = require('express');
const app = express();
https
.createServer(
{
key: fs.readFileSync(__dirname + '/key.pem', 'utf-8'),
cert: fs.readFileSync(__dirname + '/cert.pem', 'utf-8'),
},
app.use('/', (req, res) => {
res.send('Congrats! You made https server now :)');
})
)
.listen(3001);
실습해보기
포트여는법
1. https_practice라는 파일을 생성해준다.
2. app.js 파일을 만들어준다. 위 코드를 복사하여 붙여넣기한다.
3. cert.pem key.pem 파일을 만든후 이미 만들어줬던 cert.pem, key.pem을 찾아 내용을 복사하여 넣어준다. (복사하면 아래같은 내용이 나올것이다.)
4. npm init을 하여 package.json을 만들어준다.
5. npm install express, npm install fs을 하여 필요한 모듈을 다운받는다.
6. 이후 node app.js 실행시킨후 => https://localhost:3001/ 로 가본다.