-공인 인증서 발급 기관
각 브라우저는 신뢰하는 인증 발급 기관(CA)이 있다. 그래서 브라우저마다 신뢰하는 CA가 서로 다를 수 도 있다.
예를 들어 a키로 암호화를 했다면 b키로만 암호화된 키를 해제(복호화)할 수 있다. 두 개의 키중 하나는 숨겨놓는다.
중간자공격: 클라이언트와 서버 사이에서 공격자가 서로의 요청, 응답의 데이터를 탈취 및 변조하여 다시 전송하는 공격이다.
복호화: 부호화된 데이터를 인간이 알기 쉬운 모양으로 하기 위하여 또는 다음 단계의 처리를 위하여 번역함
HTTPS 인증서 : HTTPS프로토콜의 또 다른 특징 중 하나는 브라우저가 응답과 함께 전달된 인증서 정보를 확인할 수 있다는점이다.
브라우저는 인증서에서 해당 인증서를 발급한 CA 정보를 확인하고 인증된 CA가 발급한 인증서가 아니라면 아래와 같이 화면에 경고창을 띄워 서버와 연결이 안전하지 않다는 화면을 보여준다.
key.pem의 경우 개인 키이므로 git에 커밋하지 않고, 암호처럼 다우러야한다.
먼저는 방금 생성한 인증서 파일들을 HTTPS 서버에 적용해주는 작업이 필요하다.
Nodes.js https모듈 이용
const https = require('https');
const fs = require('fs');
https
.createServer(
{
key: fs.readFileSync(__dirname + '/key.pem', 'utf-8'),
cert: fs.readFileSync(__dirname + '/cert.pem', 'utf-8'),
},
function (req, res) {
res.write('Congrats! You made https server now :)');
res.end();
}
)
.listen(3001);
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);