인증서
HTTPS 통신에서 인증서는 매우 중요한 역할을 담당합니다.
mkcert
라는 프로그램을 이용하여 로컬환경에서 신뢰할 수 있는 인증서를 만들 수 있습니다.
// mkcert 설치
$ brew install mkcert
// 로컬을 인증된 발급기관으로 추가
$ mkcert -install
// 로컬 환경에 대한 인증서 발급
$ mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1
key.pem : HTTPS 서버의 개인키(비밀키)로 사용됩니다.
cert.pem : 인증서 로써 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');
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);
쿠키란 서버에서 클라이언트에 데이터를 저장하는 방법 중 하나
서버 -> 클라이언트 또는 클라이언트 -> 서버 로 쿠키를 전송할수 있습니다.
서버에서 클라이언트로 쿠키를 전송
헤더에 Set-Cookie
라는 프로퍼티에 쿠키를 담아 전송
클라이언트에서 서버로 쿠키를 전송
헤더에 Cookie
라는 프로퍼티에 쿠키를 담아 전송
서버에 접속할수 있는 이름.
URL 이 http://www.localhost.com:3000/users/login
라면
Domain 은 localhost.com
이 됩니다.
쿠키 옵션에 도메인 정보가 존재한다면 쿠키 옵션의 도메인 정보와 서버의 도메인이 일치해야만 쿠키를 전송할 수 있습니다.
서버가 라우팅할 때 사용하는 경로입니다.
URL 이 http://www.localhost.com:3000/users/login
라면
Path 는 /users/login
이 됩니다.
기본 default 값은 /
입니다.
/users
로 설정되어 있다면 /users/login
, /users/logout
등 /users
로 시작하는 요청 경로는 모두 쿠키 전송이 가능합니다.
쿠키의 유효한 기간을 정하는 옵션
MaxAge는 앞으로 몇 초동안 쿠키가 유효한지 설정하는 옵션 (1000ms)
Expires 는 언제까지 유요한지 설정하는 옵션 (Date)
사용하는 프로토콜에 따른 쿠키 전송 여부 옵션
secure : true
라면 HTTPS 프로토콜인 경우에만 쿠키 전송 가능
자바스크립트에서 브라우저의 쿠키에 접근 여부 옵션
httpOnly : true
라면 자바스크립트에서 쿠키에 접근 불가능
Cross-Origin 요청을 받은 경우 쿠기 전송 여부 옵션
Lax : Cross-Origin 요청이면 GET 메소드에 대해서만 쿠키 전송
Strict : Cross-Origin 이 아닌 same-site 인 경우에만 쿠키 전송
None : 항상 쿠키를 보낼수 있으나 Secure 옵션이 필수로 필요합니다.