TIL # 2022.03.21

📝오늘 배운 내용

HTTPS

먼저 지난번에 공부했던 HTTP는 인터넷에서 데이터를 주고 받을 수 있는 통신 프로토콜이다. 여기서 Secure라는 보안 기능이 하나 더 붙은 것이 HTTPS이다. HTTPS는 HTTP 프로토콜 내용을 암호화를 통해 보안성이 추가된 것이다. HTTP 요청은 Client와 Server간에 데이터를 주고 받을 시 중간에 누군가가 요청의 내용을 들여다 본다면 데이터를 볼 수 있었다. 개인정보가 쉽게 노출되는 것은 보안상으로 굉장히 좋지 않고 위험하기 때문에 HTTPS 프로토콜이 나온 것이다. HTTPS는 요청의 내용을 한번 암호화 시키기 때문에 개인정보 등 중요한 정보가 유출이 되어도 정확한 키 정보가 없다면 내용을 알 수 없다.

HTTPS 특징

  • 인증서

  • CA

  • 비대칭 키 암호화

인증서 (Certificate)

  • 인증서는 데이터를 제공한 서버가 정말 올바른 서버 인지 인증 및 확인을 하기 위한 용도이다.
    또한, 인증서 내용에 서버 도메인 관련 정보가 있어서 데이터 제공자의 인증을 용이하게 한다. 요청을 받으면 서버는 인증서와 함께 응답을 전송한다. 응답을 받은 클라이언트는 인증서에 작성된 도메인과 응답객체에 작성된 도메인을 비교하고, 둘의 정보가 같다면 올바른 서버에서 데이터를 제공해 준 것을 확신 할 수 있다.

CA (Certificate Authority)

  • 인증서를 발급하는 공인된 기관이다. 각 브라우저는 각자 신뢰하는 CA의 정보를 가지고 있다. 그래서 브라우저는 인증서도 차이가 난다. 이 자격은 항상 유지되는 것은 아니며 자격을 박탈 당할 수도 있다.

비대칭 키 암호화

  • 전혀 다른 키로 암호화 및 복호화가 가능하다. A라는 키로 암호화를 진행했다면 복호화에는 B라는 키가 필요하다. 그래서 HTTPS 프로토콜을 이용하는 서버는 한 쌍의 키 중 하나는 숨겨두고, 다른 하나는 클라이언트에 공개해서 데이터를 안전하게 전송할 수 있게 한다.

사설 인증서 발급

mkcert라는 프로그램을 이용해서 로컬 환경에서 신뢰할 수 있는 인증서를 만들 수 있다.

나는 macOS를 사용하고 있기에 homebrew를 이용해 설치하였다.

$ brew install mckert

아래 명령어를 통해 로컬을 인증된 발급기관으로 추가해야 한다.

$ 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 이라는 파일이 생성된 것을 확인 할 수 있다.

좋은 웹페이지 즐겨찾기