[Auth] https

jungeundelilahLEE·2021년 1월 20일
0

Auth

목록 보기
1/3

goal

  • 인증 (Authentication) 에 대해서 알아본다.
  • 암호화, hasing, salting 의 개념을 안다.
  • HTTP vs HTTPS 차이점을 이해하다.
  • 권한부여 (Authorization), 인증(Authentication) 을 이해한다.
  • 쿠키, 세션, 토큰, OAuth를 통해 인증을 구현한다.
  • 클라이언트, 서버, 데이터베이스의 전체 동작을 이해한다.
  • 회원가입 및 로그인 등의 유저인증을 구현한다.
  • 서비스의 보안과 관련된 방법을 탐색 후 원리, 장단점을 이해한다.

https (Hyper Text Transfer Protocol Secure Socket layer)

(= HTTP over SSL(TLS), HTTP over Secure)

  • HTTP보다 상대적으로 안전한 방법이고, 데이터 제공자의 신원을 보장받을 수 있다.

데이터 제공자의 신원을 확인하고 보장받는 게 인증에서 중요한 이유

  • 클라이언트는 데이터 제공자가 제공해준 데이터를 사용할 수밖에 없으므로 (클라이언트는 서버에 데이터 요청을 하고 이후 받은 데이터를 이용해서 화면을 렌더링하는 등의 작업을 해야)
  • 따라서, "중간자공격(요청이나 응답을 중간에서 가로채는 공격)"에 매우 취약하다.
  • 따라서, 해당 데이터를 암호화시켜야 한다.

1. 암호화

  • https 프로토콜의 특징 중 하나가, 암호화된 데이터를 주고 받기 때문에, 중간에 요청이 공격당하더라도, 그 데이터의 내용을 알아볼 수 없다는 것이다.

2. 인증서 (Certificate)

  • https 프로토콜의 특징 중 또 하나는, 브라우저가 응답과 함께 전달된 인증서 정보를 확인할 수 있다는 것이다. 브라우저는 인증서에서 해당 이증서를 발급한 CA 정보를 확인하고, 인증된 기관이 아니면, 경고창을 띄운다.

이러한 방식으로 브라우저는 인증된 CA가 발급한 인증서를 이용해서 데이터를 제공하는 안전한 서버를 사용할 수 있도록 사용자를 유도한다.


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

설치

  • 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/
  • macOS
$ brew install mkcert
# firefox를 사용할 경우 필요에 따라 설치해주세요.
$ brew install nss

인증서 생성

  • 로컬을 인증된 발급기관으로 추가해야 한다.
$ mkcert -install
  • 다음은 로컬 환경에 대한 인증서를 만들어야 한다.
    localhost로 대표되는 로컬 환경에 대한 인증서를 만들려면 다음 명령어를 입력한다.
$ mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1
  • 이제 옵션으로 추가한 localhost, 127.0.0.1(IPv4), ::1(IPv6)에서 사용할 수 있는 인증서가 완성되었다. cert.pem, key.pem 이라는 파일이 생성된 것을 확인할 수 있다.
profile
delilah's journey

0개의 댓글