이것저것

HTTPS, SSL

코딩공부 2024. 6. 27. 01:23

HTTP (HyperText Transfer Protocol)

 HTTP 란 인터넷 상에서 정보를 주고 받을 수 있는 프로토콜이며, 주로 HTML 문서를 주고받는 데 많이 쓰인다. 통신 구조는 클라이언트와 서버 사이에서 요청과 응답으로 이루어져 있다. 통신은 암호화가 되지 않은 방법으로 데이터를 전송하므로 누군가가 네트워크에서 악의적인 감청을 한다면 내용이 유출된다.

 

 이러한 평문 전송을 통한 HTTP 통신을 보완한 것이 HTTPS 이다. HTTPS 의 S 는 Over Secure Socket Layer 의 약자로, HTTP 와 디지털 암호화 기술을 결합하여 보안이 강화된 버전이다.

 HTTPS 는 모든 HTTP 요청과 응답 데이터는 네트워크로 보내지기 전에 암호화된다. HTTPS 는 HTTP의 하부에 보안 계층을 제공하여 동작하는데, 이 계층은 SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security)를 이용하여 구현된다.

 

 

 

 

SSL을 설정하는 방법

1. Reverse Proxy를 통한 SSL 설정

 

개요

Reverse proxy (예: Nginx, Apache)를 사용하여 SSL을 처리하고, 실제 애플리케이션 서버와는 HTTP로 통신합니다.

장점

  1. 중앙집중식 관리:
    • 여러 애플리케이션에 대해 하나의 SSL 설정으로 관리할 수 있습니다.
    • 인증서 갱신과 관리가 용이합니다 (예: Let's Encrypt 사용).
  2. 로드 밸런싱:
    • Reverse proxy를 통해 로드 밸런싱을 쉽게 구현할 수 있습니다.
    • 클라이언트의 요청을 여러 백엔드 서버에 분산시킬 수 있습니다.
  3. 성능 및 보안:
    • Static content (정적 파일)를 효율적으로 캐시할 수 있습니다.
    • 웹 애플리케이션 방화벽(WAF)과 같은 추가 보안 기능을 적용할 수 있습니다.
  4. 유연성:
    • 다양한 설정과 플러그인을 통해 트래픽을 조절할 수 있습니다 (예: IP 제한, 요청 재작성 등).

단점

  1. 추가 구성 필요:
    • Reverse proxy 서버를 추가로 설정하고 유지 관리해야 합니다.
    • 네트워크 구성 복잡도가 증가할 수 있습니다.
  2. 잠재적 병목:
    • Reverse proxy 서버가 병목이 될 수 있습니다. 특히 트래픽이 많은 경우 성능 최적화가 필요합니다.



2. Spring 프로젝트 내에서 직접 SSL 설정

 

개요

Spring Boot 애플리케이션 내에서 직접 SSL을 설정하여 클라이언트와 서버 간의 SSL 통신을 처리합니다.

장점

  1. 단순한 설정:
    • 애플리케이션 내에서 SSL 설정을 직접 관리하여 추가적인 서버 구성 없이 간단히 설정할 수 있습니다.
    • 별도의 reverse proxy 서버를 필요로 하지 않습니다.
  2. 독립적인 배포:
    • 각 애플리케이션이 독립적으로 SSL을 관리할 수 있습니다.
    • 별도의 reverse proxy 구성 없이 컨테이너화된 환경에서 쉽게 배포 가능합니다.

단점

  1. 인증서 관리의 복잡성:
    • 각 애플리케이션에 대해 별도의 인증서를 관리해야 합니다.
    • 인증서 갱신 작업이 복잡해질 수 있습니다.
  2. 유연성 부족:
    • 로드 밸런싱, 캐싱, 웹 방화벽 등 reverse proxy 서버가 제공하는 다양한 기능을 사용하기 어렵습니다.
  3. 성능:
    • 애플리케이션 서버가 직접 SSL 암호화를 처리하므로 CPU 사용량이 증가할 수 있습니다.
    • 특히 트래픽이 많은 경우, 성능 최적화가 필요합니다.

      비교 요약 
      특성 Reverse Proxy Spring 프로젝트 내 SSL 
      설정 복잡성 추가적인 서버 구성 필요 애플리케이션 내에서 간단히 설정 가능
      중앙 집중 관리 예, 여러 애플리케이션에 대해 관리 가능 아니요, 각 애플리케이션 별로 관리
      성능 최적화 고성능 캐시 및 로드 밸런싱 가능 애플리케이션 서버가 직접 처리
      유연성 및 기능 확장 다양한 플러그인 및 설정 가능 제한적, 추가 기능 적용 어려움
      인증서 갱신 및 관리 중앙 집중식으로 쉽게 관리 가능 각 애플리케이션 별로 갱신 필요
      보안 기능 웹 방화벽(WAF) 등 다양한 보안 기능 사용 가능 기본적인 SSL 보안 기능만 제공

'이것저것' 카테고리의 다른 글

Mock 관련 Annotations  (0) 2025.03.03
단위 테스트 Test Double  (1) 2025.03.03
Web Cache  (0) 2024.06.28