전체 목록
네트워크Easy#022

HTTP와 HTTPS의 차이점은 무엇인가요?

#네트워크#HTTP#HTTPS#보안

답변 포인트

암호화, 포트, 인증서를 키워드로 생각해보세요.

정답 및 해설

빠른 요약

HTTP (HyperText Transfer Protocol): 데이터를 평문으로 전송, 포트 80, 보안 취약. HTTPS (HTTP Secure): HTTP + TLS/SSL 암호화, 포트 443.

HTTP(HyperText Transfer Protocol)와 HTTPS(HTTP Secure)는 웹에서 데이터를 주고받는 프로토콜입니다. 가장 큰 차이는 보안으로, HTTPS는 HTTP에 TLS/SSL 암호화 계층을 추가하여 통신의 기밀성, 무결성, 인증을 보장합니다.

HTTP란?

HTTP는 1991년에 만들어진 웹의 근간 프로토콜입니다. 클라이언트(브라우저)와 서버 사이에 요청(Request)과 응답(Response) 형태로 데이터를 주고받습니다.

네트워크
  : GET /index.html HTTP/1.1
  : 200 OK, <html>...</html>

HTTP의 문제점

HTTP는 데이터를 평문(plain text) 으로 전송합니다. 즉, 중간 경로의 누구든 패킷을 가로채면 내용을 그대로 읽을 수 있습니다.

네트워크
-- HTTP  (     ) --
POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded

username=admin&password=1234secret    !

이런 공격을 중간자 공격(Man-in-the-Middle Attack, MITM) 이라 합니다. 공격자가 클라이언트와 서버 사이에서 트래픽을 도청하거나 변조할 수 있습니다.

HTTPS란?

HTTPS는 HTTP 통신 위에 TLS(Transport Layer Security) 계층을 추가한 것입니다. (TLS의 이전 버전이 SSL이며, 현재는 TLS 1.2/1.3이 표준입니다.)

HTTPS가 보장하는 세 가지

  1. 기밀성(Confidentiality): 데이터를 암호화하여 도청을 방지
  2. 무결성(Integrity): 데이터가 전송 중 변조되지 않았음을 보장 (MAC 사용)
  3. 인증(Authentication): 서버가 실제로 해당 도메인의 소유자임을 인증서로 검증

TLS 핸드셰이크 과정

HTTPS 연결이 수립되는 과정을 이해하면 보안 원리를 파악할 수 있습니다.

네트워크
1. Client Hello
     :  TLS ,  (cipher suites),  

2. Server Hello + Certificate
     :   , , SSL/TLS  

3.  
   :     CA(Certificate Authority)  
                 
                

4.   (Key Exchange)
     :      (  )

5.   
   :     () 

6. Finished
         

디지털 인증서와 CA

HTTPS의 인증 체계는 PKI(Public Key Infrastructure) 를 기반으로 합니다.

네트워크
Root CA (  )
  Intermediate CA (  )
      End-Entity Certificate ( )
          -   
          - 
          - 
          - (CA) 

브라우저는 신뢰할 수 있는 Root CA 목록을 내장하고 있습니다. 서버가 제시한 인증서의 서명 체인을 Root CA까지 검증합니다. 이 과정이 성공하면 브라우저 주소창에 자물쇠 아이콘이 표시됩니다.

인증서 종류

종류검증 수준발급 기간주요 용도
DV (Domain Validation)도메인 소유 확인수 분일반 웹사이트, 블로그
OV (Organization Validation)도메인 + 기업 정보 확인수 일기업 웹사이트
EV (Extended Validation)엄격한 기업 심사수 주금융, 전자상거래

HTTP vs HTTPS 비교

항목HTTPHTTPS
포트80443
암호화없음 (평문)TLS/SSL 암호화
데이터 기밀성보장 안 됨보장
데이터 무결성보장 안 됨보장
서버 인증없음인증서로 검증
성능빠름핸드셰이크 오버헤드 있음 (미미)
SEO불리유리 (Google 랭킹 요소)
브라우저 표시"주의 요함" 경고자물쇠 아이콘

실제 코드에서의 HTTPS 관련 설정

Next.js에서 HTTP → HTTPS 리다이렉트

JavaScript
// next.config.js
module.exports = {
  async redirects() {
    return [
      {
        source: '/:path*',
        has: [{ type: 'header', key: 'x-forwarded-proto', value: 'http' }],
        destination: 'https://yoursite.com/:path*',
        permanent: true,
      },
    ];
  },
};

HSTS (HTTP Strict Transport Security)

HSTS는 브라우저에게 "이 사이트는 항상 HTTPS로 연결하라"고 알려주는 헤더입니다.

JavaScript
// Next.js headers 설정
module.exports = {
  async headers() {
    return [
      {
        source: '/(.*)',
        headers: [
          {
            key: 'Strict-Transport-Security',
            value: 'max-age=31536000; includeSubDomains; preload',
          },
        ],
      },
    ];
  },
};

fetch에서 HTTPS와 인증서 관련

JavaScript
// Node.js에서 자체 서명 인증서(개발 환경)를 허용할 때
// (프로덕션에서는 절대 사용 금지)
const https = require('https');
const agent = new https.Agent({ rejectUnauthorized: false });

fetch('https://localhost:3000/api', { agent });

현대 웹에서 HTTPS의 중요성

네트워크
HTTPS  :
- Service Workers (PWA)
- Geolocation API
- Camera/Microphone API
- Web Crypto API
- HTTP/2 ( HTTPS )
-  Secure 

2024년 기준으로 Chrome은 HTTP 사이트에 "주의 요함(Not Secure)" 경고를 표시하며, Google은 HTTPS 사이트를 SEO에서 우대합니다. Let's Encrypt 등의 무료 인증서 서비스 덕분에 HTTPS 도입의 비용 장벽도 사라졌습니다.

정리

HTTP는 데이터를 암호화 없이 전송하여 도청, 변조, 위장 공격에 취약합니다. HTTPS는 TLS 암호화를 통해 기밀성, 무결성, 인증을 모두 보장합니다. 포트는 HTTP가 80, HTTPS가 443을 사용합니다. 현대 웹에서는 모든 사이트에 HTTPS 적용이 표준이며, SEO 혜택과 브라우저 기능 접근에도 필수입니다.

관련 질문

같은 카테고리/태그 기준