HTTPS, Hashing, Cookie

오늘도 삽질중·2021년 12월 27일
0

[인증 / 보안]

목록 보기
1/3

HTTPS

  • (HTTTP + SECURE)
  • HTTP프로토콜 내용을 암호화
    요청의 내용을 한번 암호화를 시키기 때문에 개인정보등이 유출되더라도 정확한 키가 없으면 어떤 내용인지 알 수 없다.

특징

  • 인증서
  • ca
  • 비대칭 키 암호화

인증서(데이터를 제공한 서버가 정말로 데이터를 보내준 서버인지 인증확인)

  • 데이터 제공자 신원 보장
  • 인증서에는 도메인 관련 정보가 담겨있다.

    인증서 domain === 응답객체 domain
    응답에서 확인한 도메인!== 인증서에 작성된 도메인
    요청을 하면 서버는 인증서화 함께(도메인포함) 응답을 전송한다.
    응답을 받은 클라이언트는 인증서 domain === 응답객체 domain를 비교하는데.. 만약 같다면 데이터를 제공한 서버가 확실하다.
    하지만, 해커가 중간에 요청에서 탈취해서 제3자 공격이 발생한다면 응답에서 확인한 도메인, 인증서에서 보낸 서버는 같지 않을 것이고 문제가 생겼음을 알 수 있다.

CA

-공인 인증서 발급 기관
각 브라우저는 신뢰하는 인증 발급 기관(CA)이 있다. 그래서 브라우저마다 신뢰하는 CA가 서로 다를 수 도 있다.

비대칭 키 암호화

예를 들어 a키로 암호화를 했다면 b키로만 암호화된 키를 해제(복호화)할 수 있다. 두 개의 키중 하나는 숨겨놓는다.

중간자공격: 클라이언트와 서버 사이에서 공격자가 서로의 요청, 응답의 데이터를 탈취 및 변조하여 다시 전송하는 공격이다.

복호화: 부호화된 데이터를 인간이 알기 쉬운 모양으로 하기 위하여 또는 다음 단계의 처리를 위하여 번역함

HTTPS 인증서 : HTTPS프로토콜의 또 다른 특징 중 하나는 브라우저가 응답과 함께 전달된 인증서 정보를 확인할 수 있다는점이다.
브라우저는 인증서에서 해당 인증서를 발급한 CA 정보를 확인하고 인증된 CA가 발급한 인증서가 아니라면 아래와 같이 화면에 경고창을 띄워 서버와 연결이 안전하지 않다는 화면을 보여준다.

사설 인증서 발급 및 HTTPS 서버 구현

key.pem의 경우 개인 키이므로 git에 커밋하지 않고, 암호처럼 다우러야한다.

HTTPS서버 작성

  • node.js환경에서 HTTPS서버를 작성하기 위해 https내장 모듈을 이용할 수 있다. express도 가능

먼저는 방금 생성한 인증서 파일들을 HTTPS 서버에 적용해주는 작업이 필요하다.

Nodes.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);
profile
의미없는 삽질은 없다1

0개의 댓글