HTTPS (Hypertext Transfer Protocol Secure)

Kkd·2024년 12월 29일
0

매일메일 개념정리

목록 보기
51/93

HTTPS 개요

HTTPS (Hypertext Transfer Protocol Secure)는 HTTP에 SSL/TLS(보안 계층)를 추가하여 데이터를 암호화한 프로토콜입니다. 이는 웹 브라우저와 웹 서버 간의 통신을 안전하게 보호합니다.


HTTPS 적용 방법

  1. SSL/TLS 인증서 획득:

    • 인증 기관(Certificate Authority, CA)에서 SSL/TLS 인증서를 발급받습니다.
    • 무료 인증서: Let's Encrypt.
    • 상업 인증서: DigiCert, GlobalSign 등.
  2. 웹 서버 설정:

    • Apache, Nginx, Tomcat 등의 웹 서버에서 HTTPS를 활성화하도록 설정 파일을 변경합니다.

    • 예: Nginx 설정

      server {
          listen 443 ssl;
          server_name example.com;
      
          ssl_certificate /path/to/fullchain.pem;
          ssl_certificate_key /path/to/privkey.pem;
      }
  3. 포트 번호:

    • HTTPS는 기본적으로 포트 443을 사용합니다.
    • HTTP(포트 80) 요청을 HTTPS로 리다이렉트하도록 설정할 수 있습니다.
  4. 테스트 및 배포:

    • https:// 프로토콜로 웹사이트에 접속하여 작동 확인.
    • SSL Labs 등의 도구로 HTTPS 설정을 점검.

HTTPS 동작 원리

  1. 클라이언트 요청:

    • 사용자가 https://로 시작하는 URL에 접속하면, 브라우저는 HTTPS를 요청합니다.
  2. SSL/TLS 핸드셰이크:

    • 클라이언트와 서버 간의 보안 연결을 설정하기 위한 초기 과정.
    • 핸드셰이크 주요 단계:
      1. 클라이언트 헬로(Client Hello):
        • 클라이언트는 사용할 수 있는 암호화 알고리즘(Cipher Suites)과 TLS 버전을 서버에 보냅니다.
      2. 서버 헬로(Server Hello):
        • 서버는 선택한 암호화 알고리즘과 인증서를 클라이언트에 보냅니다.
      3. 서버 인증 및 키 교환:
        • 클라이언트는 서버의 인증서를 확인(CA에 의해 신뢰되는지 확인)하고, 키 교환 프로세스를 시작합니다.
      4. 세션 키 생성:
        • 클라이언트와 서버는 대칭키를 생성하여 데이터를 암호화하는 데 사용합니다.
  3. 데이터 암호화 전송:

    • 이후의 모든 데이터는 암호화되어 전송됩니다.
    • 대칭 암호화 방식으로 데이터를 암호화하여 성능을 최적화.
  4. 연결 종료:

    • 클라이언트와 서버 간의 통신이 끝나면, TLS 세션이 종료됩니다.

HTTPS의 주요 특징

  1. 암호화:

    • 데이터를 암호화하여 도청(eavesdropping) 방지.
    • 대칭 암호화를 사용하여 성능 향상.
  2. 인증:

    • 인증서를 통해 서버의 신원을 검증하여 피싱 사이트 방지.
  3. 데이터 무결성:

    • 데이터가 전송 중에 수정되지 않았음을 보장.

HTTPS의 장점

  1. 보안 강화:

    • 개인 정보 보호 및 데이터 무결성을 보장.
  2. SEO 향상:

    • 검색 엔진(예: Google)은 HTTPS를 사용하는 웹사이트를 더 우선적으로 노출.
  3. 신뢰성 제공:

    • 브라우저에서 "안전하지 않음" 경고 방지.
  4. 사용자 신뢰도 증가:

    • HTTPS가 적용된 웹사이트는 사용자가 더 신뢰.

HTTPS 적용 시 주의점

  1. 인증서 갱신:

    • 인증서의 유효 기간이 끝나기 전에 갱신 필요.
    • Let's Encrypt는 기본적으로 90일 단위로 갱신.
  2. 성능 고려:

    • HTTPS는 암호화/복호화 작업 때문에 HTTP보다 약간 더 많은 리소스를 사용.
    • 이를 최소화하기 위해 HTTP/2나 SSL Session Reuse를 사용.
  3. HTTP 리다이렉트:

    • HTTP로 접속한 요청을 HTTPS로 리다이렉트하도록 설정.
  4. 혼합 콘텐츠 문제:

    • HTTPS 웹사이트에서 HTTP 리소스를 로드하면 "혼합 콘텐츠" 경고 발생.

HTTPS 적용 예시 코드

Nginx 설정

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri; # HTTP -> HTTPS 리다이렉트
}

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/fullchain.pem;
    ssl_certificate_key /etc/ssl/private/privkey.pem;

    location / {
        root /var/www/html;
        index index.html;
    }
}

Spring Boot 설정

server:
  port: 443
  ssl:
    enabled: true
    key-store: classpath:keystore.p12
    key-store-password: password
    key-store-type: PKCS12

결론

HTTPS는 보안성과 신뢰성을 제공하여 인터넷 통신의 필수 요소로 자리 잡았습니다. SSL/TLS 인증서와 간단한 서버 설정으로 HTTPS를 쉽게 적용할 수 있으며, 이를 통해 데이터 암호화, 서버 인증, 데이터 무결성 등 다양한 보안 기능을 구현할 수 있습니다.

추가 학습 자료

profile
🌱

0개의 댓글