HTTP와 HTTPS

손지민·2024년 1월 22일

AWS EC2 배포 입문

목록 보기
17/17

개요

애플로그인을 위해 SSL프로토콜이 적용된 HTTPS 도메인이 필요하여 HTTPS를 공부하게 되었습니다.

HTTP와 HTTPS는 인터넷에서 데이터를 전송하기 위한 프로토콜(통신 규약)입니다.

공부 중이므로 틀린 내용, 의견, 질문 있으시면 댓글 남겨주시면 감사하겠습니다.

HTTP(HyperText Tranfer Protocol)

  • HTTP는 웹 브라우저(클라이언트)와 웹 서버 간에 데이터를 주고받기 위한 텍스트 기반의 프로토콜입니다.
  • 데이터는 평문(Text)으로 전송되기 때문에 보안이 취약하며, 동작이 간단하고 빠르게 이루어집니다.
    • HTTP의 보안상 문제를 해결한 버전이 HTTPS 프로토콜입니다.
  • 주로 웹 페이지의 텍스트, 이미지, 비디오 등을 브라우저로 전송하는 데 사용됩니다.

HTTPS

  • HTTPS는 HTTP의 보안 버전으로, 데이터의 암호화와 보안 접속을 제공합니다.
  • HTTP에 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 추가하여 보안 통신을 구현합니다.
    • (필자는 SSL 방식으로 구현하고자합니다.)

HTTPS의 암호화 원리

간단히 말하면 공개키(클라이언트) 1개와 개인키(서버)1개, 총 2개의 키를 활용한다. 공개키로 암호화하면 개인키로만 복호화 할 수 있고, 개인키로 암호화하면 공개키로 복호화할 수 있습니다.

1. 공개키 (Public Key):

공개키는 암호화의 한쪽 키로, 누구나 알 수 있도록 공개되어 있습니다.
클라이언트와 서버 간의 안전한 통신을 위해 사용됩니다.
공개키로 암호화된 데이터는 해당 키와 쌍을 이루는 개인키로만 복호화할 수 있습니다.
SSL/TLS에서는 서버가 공개키를 클라이언트에게 제공하여 안전한 핸드셰이크 및 데이터 전송을 가능하게 합니다.

2. 개인키 (Private Key):

개인키는 공개되지 않고 보안이 유지되어야 하는 키입니다.
해당 키는 공개키와 쌍을 이루며, 공개키로 암호화된 데이터를 복호화할 수 있습니다.
SSL/TLS에서는 웹 서버가 개인키를 가지고 있으며, 이 개인키를 사용하여 클라이언트로부터 전송된 암호화된 데이터를 해독합니다.
개인키는 서버의 신원을 확인하고 통신의 기밀성을 유지하기 위한 중요한 부분입니다.

3. 인증 기관 (Certicicate Authority,CA)

디지털 환경에서 신원을 확인하고 안전한 통신을 보장하기 위한 중요한 역할을 하는 신뢰할 수 있는 기관입니다. CA는 주로 공개키 인증서를 발급하고 관리하여 인터넷 사용자와 웹사이트 간의 신뢰성을 확보합니다.

역할과 기능

  • 공개키 인증서 발급
  • 신원 확인
  • 인증서 갱신과 폐기
  • 신뢰의 기반

HTTPS 통신 흐름

  1. 애플리케이션 서버(A)의 키 생성:
    • A서버를 운영하는 기업은 HTTPS를 적용하기 위해 공개키와 개인키를 생성합니다.
  2. CA 기업과의 계약 및 등록:
    • 안전한 통신을 보장할 수 있는 신뢰할 수 있는 CA 기업을 선택하고, 해당 기업에 내 공개키를 등록하여 관리해달라고 계약을 체결하며 이를 위해 요금을 지불합니다.
  3. CA 기업의 인증서 발급:
    • 계약이 성사되면 CA 기업은 자체적으로 보유한 공개키와 개인키를 활용하여 A서버의 정보를 담은 인증서를 생성합니다. 해당 인증서에는 CA 기업의 디지털 서명이 포함되어 있습니다.
  4. A서버에게 인증서 제공:
    • CA 기업은 생성한 인증서를 암호화하여 A서버에게 제공합니다.
  5. A서버의 HTTPS 응답:
    • A서버는 클라이언트로부터 온 HTTPS 요청에 대해 암호화된 인증서를 함께 응답합니다.
      HTTPS 응답에는 암호화된 인증서뿐만 아니라 서버의 공개키와 함께 서버의 신원을 확인하기
      위한 디지털 서명도 포함됩니다. 이 디지털 서명은 클라이언트에게 서버가 보낸 데이터의 무결성을 보장합니다.
  6. 클라이언트의 CA 기업 검증:
    • 클라이언트는 브라우저에 미리 내장된 신뢰할 수 있는 CA 기업의 공개키를 사용하여 A서버로부터 받은 인증서를 복호화하고, CA 기업의 디지털 서명을 확인합니다.
  7. A서버의 공개키 획득:
    • 클라이언트는 CA 기업의 디지털 서명이 유효하면 A서버의 공개키를 추출합니다.
  8. 안전한 통신 확립:
    • 이제 클라이언트는 A서버의 공개키를 사용하여 향후 통신을 위해 데이터를 암호화합니다. A서버는 자신의 개인키를 사용하여 클라이언트로부터 받은 암호화된 데이터를 복호화합니다.

참고

profile
병목을 측정해 고치고, 장애는 증거로 원인을 확정하는 Java/Spring 백엔드 개발자 · 배차 엔진 메모리 12GB→0.26GB · 요금제·결제 정합성 설계 · JVM GC·데드락 규명

0개의 댓글