TIL 13주차 1일(2)_인증서, HTTPS 서버, Cookie

Sang heon lee·2021년 9월 7일
0

TIL 리스트

목록 보기
49/60

인증서

1. 인증서

  • 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 서버의 공개키로 사용됩니다.

2. HTTPS 서버 작성

  • node.js 환경에서 HTTPS 서버를 만드는 방법은 두가지가 있습니다.
    첫 번째 : https 내장 모듈을 사용.
    두 번째 : express.js를 이용해 만듬.

2.1 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);

2.2 express.js 이용

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 라는 프로퍼티에 쿠키를 담아 전송

3.2.1 Domain

  • 서버에 접속할수 있는 이름.

  • URL 이 http://www.localhost.com:3000/users/login 라면
    Domain 은 localhost.com 이 됩니다.

  • 쿠키 옵션에 도메인 정보가 존재한다면 쿠키 옵션의 도메인 정보와 서버의 도메인이 일치해야만 쿠키를 전송할 수 있습니다.

3.2.2 Path

  • 서버가 라우팅할 때 사용하는 경로입니다.

  • URL 이 http://www.localhost.com:3000/users/login 라면
    Path 는 /users/login 이 됩니다.

  • 기본 default 값은 / 입니다.

  • /users 로 설정되어 있다면 /users/login, /users/logout/users 로 시작하는 요청 경로는 모두 쿠키 전송이 가능합니다.

3.2.3 MaxAge or Expires

  • 쿠키의 유효한 기간을 정하는 옵션

  • MaxAge는 앞으로 몇 초동안 쿠키가 유효한지 설정하는 옵션 (1000ms)

  • Expires 는 언제까지 유요한지 설정하는 옵션 (Date)

3.2.4 Secure

  • 사용하는 프로토콜에 따른 쿠키 전송 여부 옵션

  • secure : true 라면 HTTPS 프로토콜인 경우에만 쿠키 전송 가능

3.2.5 HttpOnly

  • 자바스크립트에서 브라우저의 쿠키에 접근 여부 옵션

  • httpOnly : true 라면 자바스크립트에서 쿠키에 접근 불가능

3.2.6 SameSite

  • Cross-Origin 요청을 받은 경우 쿠기 전송 여부 옵션

  • Lax : Cross-Origin 요청이면 GET 메소드에 대해서만 쿠키 전송

  • Strict : Cross-Origin 이 아닌 same-site 인 경우에만 쿠키 전송

  • None : 항상 쿠키를 보낼수 있으나 Secure 옵션이 필수로 필요합니다.

profile
개초보

0개의 댓글