HTTPS는 HTTP를 안전하게 만드는 방식이다
HTTP
HTTPS
mkcert
라는 프로그램을 이용해서 로컬 환경에 신뢰할 수 있는 인증서를 만들 수 있다.
//Ubuntu
$ sudo apt install libnss3-tools
$ wget -O mkcert
https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64
$ chmod +x mkcert
$ sudo cp mkcert /usr/local/bin/
// 인증서 생성
$ mkcert -install
$ mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1
HTTPS 서버 작성
// express.js 사용
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('hi, useonglee~ :)');
})
)
.listen(3001);
암호화는 일련의 정보를 임의의 방식을 사용하여 다른 형태로 변환하고, 해당 방식에 대한 정보를 소유한 사람을 제외하고 이해할 수 없도록 정보를 관리하는 과정이다.
Hashing
은,
Salt
는 암호화해야 하는 값에 별도의 값을 추가하여 결과를 변형하는 것이다.
암호화만 해놓는다면 해시된 결과가 늘 같다.
원본값에 임의로 약속된 별도의 문자열을 추가하여 기존 해시값과 전혀 다른 해시 값이 반환되어 노출되더라도 원본값을 보호할 수 있도록 하는 안전장치이다.
기존: (암호화 하려는 값) => (hash 값)
salt: (암호화 하려는 값) + (salt 값) => (hash 값)
Cookie는 서버가 웹 브라우저에 정보를 저장하고 불러올 수 있는 수단이다.
해당 도메인에 대해 쿠키가 존재하면, 웹 브라우저는 도메인에게 http 요청 시 쿠키를 함께 전달한다.
하지만 데이터를 저장한 이후 아무 때나 데이터를 가져올 수 없다. 데이터를 저장한 이후 특정 조건들이 만족하는 경우에만 다시 가져올 수 있다.
express-session 쿠키 설정
// 오늘 내가 사용한 쿠키 설정이다.
app.use(
session({
secret: '@useonglee',
resave: false,
saveUninitialized: true,
cookie: {
domain: 'localhost',
path: '/',
maxAge: 24 * 6 * 60 * 10000,
sameSite: 'none',
httpOnly: true,
secure: true,
},
})
);
오늘 웹에 대해서 더 깊은 공부를 하였는데, 생각보다 이론들이 재밌어서 좋았다. 그리고 express-session 라이브러리를 사용해서 POST/login 요청과 POST/logout 요청 API를 구현했는데 어제 내가 혼자 공부했던 내용과 비슷하기로 했고, 쉽게 구현할 수 있는 문제들이여서 과제를 잘 마무리할 수 있었다!! 엔지니어분들도 웹 인증에 대해서 정말 중요하다고 강조하셨고, 다음주 H.A 시험에도 인증 구현 부분이 가장 많이 나올 것 같다는 이야기를 들었으니 주말에 복습을 통해 완벽히 다뤄보자!
👊 내일의 TIW(today I Will)
Token