TIL : 210802_월_(https)
HTTPS
http
가ssl
을 이용한것이https
SSL
- 그렇다면
ssl
이란?
- 디지털인증서. 클라이언트와 서버의 통신을 제3자가 보증해주는 전자화된 문서
- ct가 요청을 보내면 server가 to ct 인증서 정보를 전달.
- ct는 인증서가 신뢰할만한 것인지 검증한다.
ssl
로 얻을 수 있는것 ?
- 통신이 제3자에게 노출 되지 못하게 한다.
- 서버가 신뢰할 수 있는 서버인지 판단할 수 있다.
대칭키
ssl
이란?ssl
로 얻을 수 있는것 ?- ct와 server가 같은 키값을 가지고 암호화와 복호화를 진행한다.
- 대칭키의 단점은 둘다 같은 키값을 가지기 위해서는 암호화되지 않은 키값을 통신으로 주고받아야하는데, 이때 유출될 가능성이 높다.
공개키 (for 암호화 / 인증 )
- 서로 다른 두개의 키
- public키로 암호화를 하면, 그에 해당하는 private키만이 복호화가 가능하다.
- 따라서 키 배달사고가 발생하지 않는다.
공개키를 이용해서 인증하기
받은 정보가 내가 원하던 사람이 보낸 정보가 맞나 ?
- 위 사진은 암호로서의 기능이 없음.
- a키를 가진 사람이 보낸 정보로, b키가 복호화에 성공했다는 의미는
a키를 가진 사람이 내가 원하던 사람이는 것 보증
- 단 매우 복잡한 연산이므로, 통신의 초창기 비밀키 생성을 위해 사용하는 편.
HTTPS 사설 인증서 발급
mkcert?
- 로컬환경에서 신뢰할 수 있는 인증서를 만들어주는 도구 ,
- 설치
- 설치하기 명령어 Ubuntu
sudo apt install linbnss-tools
wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64
//mkcert깃클론
chmod +x
sudo cp mkcert /usr/local/bin/
- 인증서 생성 명령어 (로컬을 인증된 발급기관으로 추가 )
mkcert -install
- 로컬 환경에 대한 인증서를 만들기 localhost로 대표되는 로컬 환경에 대한 인증서를 만들어준다.
mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1
혹은
옵션으로 추가한 example.com 도메인에서 사용할 수 있는 인증서 발급
mkcert -key-file key.pem -cert-file cert.pem example.com *.example.com
- 적용하기 node.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);
혹은 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);
Hashing
어떠한 문자열에 임의의 연산(암호화)을 적용하여 다른 문자열로 변환하는 것
- 일반적인 res와 req의 과정
- 2번 과정 후에 암호화가 일어난다.
즉, 서버에서 암호화를 해서 DB와 대조 (DB역시 암호화된 문자를 저장)
SALT
암호화 할 값에 어떤 '별도의 값 salt'를 추가하여 결과를 변형한다.
문자열
+salt값
=>>>hash값
- 이렇게
salt
를 사용하여 알고리즘 노출시 위험을 줄여준다. - 단, 몇가지 주의점이 있음
- salt 는 유저와 패스워드 별로 유일한 값을 가져야함
- 계정생성 및 비번변경이 일어날때마다 새로운 salt필요
- 재사용불가
- DB의 유저테이블에 함께 저장된다.
COOKIE
클라이언트(브라우저) 로컬에 저장되는 키-값
형태의 데이터이다.
- 인증 유효시간 명시 가능하다.
- 쿠키 데이터는 무한정이 아니다.
- 사용자의 특별한 요청이 없어도 서버에 요청할때 자동으로
Request Header
를 포함한다. - 쿠키의 구성요소 / set-cookie
cookie: {
domain: 'localhost',
path: '/',
maxAge: 24 * 6 * 60 * 10000,
sameSite: 'None',
httpOnly: true,
secure: true,
},
Author And Source
이 문제에 관하여(TIL : 210802_월_(https)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@beablessing/TIL-210802화https저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)