HTTP와 HTTPS는 둘다 같은 역할을 한다. 차이점은 HTTPS는 보안장치가 더 결합된 통신방식이다.
둘은 같은 의미로 이해하고 있는 경우가 많다. 이는 맞기도 틀리기도 하다. HTTPS 프로토콜은 SSL 위에서 돌아가는 프로토콜 이다.
SSL은 TLS와 같은 것이다. SSL 3.0을 TLS 1.0이 계승했다.
클라이언트와 서버간의 통신을 제 3자가 보증해주는 전자화된 문서다.
암호화
본 내용을 숨기기 위해서 내용을 암호화 하는 것복호화
암호화된 내용을 본 내용으로 다시 복귀 시키는 것
이 모든 과정은 key
를 사용해서 이루어진다.
키
A
로 암호화 -> 키B
로만 복호화 가능
Hand Shake : 클라이언트가 요청을 보내면 암호화 가능한 키와 인증서를 전달한다.
비밀 키 생성 : 키 제작용 스트링을 이용해서 서로 데이터를 주고받고 비밀키를 생성한다.
상호 키 검증 : 다시 암호화를 해서 서로 전달한다. 복호화를 성공했다면 키 검증 성공!!
암호화는 일련의 정보를 임의의 방식을 사용해서 다른 형태로 변형해서 해당 방식을 소유한 사람을 제외하고는 이해할 수 없도록 관리하는 '알고리즘'을 이용해 정보를 관리하는 과정
Hashing : 어떠한 문자열에 '임의의 연산'을 적용하여 다른 문자열로 변환하는 것
Salt : 암호화해야 하는 값에 어떤 '별도의 값'을 추가하여 결과를 변형하는 것
// node.js 이용
const https = require('https');
const fs = require('fs');
const express = require('express');
// https를 이용한 구현
// 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);
// 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);