HTTP & HTTPS: 두 판 사이의 차이

기술노트
(CS 용어 정리 - HTTP & HTTPS 추가)
 
(Gemini 벌크 업로더로 자동 업로드)
1번째 줄: 1번째 줄:
=== HTTP & HTTPS ===
== 🌐 HTTP & HTTPS ==


<br>
'''HTTP (HyperText Transfer Protocol)'''는 월드 와이드 웹(WWW)에서 클라이언트(웹 브라우저)와 서버가 '''HTML 문서와 같은 리소스를 주고받기 위한 통신 규약(약속)'''입니다. 웹 통신의 가장 기본적인 토대입니다.


* ##### HTTP(HyperText Transfer Protocol)
'''HTTPS (HTTP Secure)'''는 HTTP의 보안이 강화된 버전입니다. 모든 통신 내용이 '''SSL/TLS 프로토콜을 통해 암호화'''되어, 중간에서 데이터를 가로채더라도 내용을 알 수 없습니다.


  인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약
----


<br>
=== 🧐 HTTP의 특징 ===


HTTP는 텍스트 교환이므로, 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈가 존재한다.
* '''비연결성 (Connectionless)''' : 클라이언트가 요청을 보내고 서버가 응답을 하면, 바로 연결을 끊습니다. 이를 통해 서버 자원을 효율적으로 사용할 수 있습니다.
* '''무상태 (Stateless)''' : 서버는 클라이언트의 이전 요청 상태를 기억하지 않습니다. 각 요청은 완전히 독립적으로 처리됩니다. (상태를 유지하기 위해 쿠키, 세션 등을 사용합니다.)


이런 보안 문제를 해결해주는 프로토콜이 ''''HTTPS''''
----


<br>
=== 🔒 HTTPS의 필요성 ===


* ##### HTTPS(HyperText Transfer Protocol Secure)
{| class="wikitable"
! 구분 !! HTTP !! HTTPS
|-
! 보안 || 통신 내용이 암호화되지 않아 '''중간자 공격(MITM)'''에 취약 || 모든 내용이 암호화되어 안전
|-
! 신뢰성 || 접속한 사이트가 진짜인지 위조된 사이트인지 확인 불가 || SSL/TLS 인증서를 통해 신뢰할 수 있는 사이트임을 증명
|-
! URL || `http://` 로 시작 || `https://` 로 시작 (자물쇠 아이콘 표시)
|}


  인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 사용해 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약
오늘날 대부분의 웹사이트는 사용자의 개인정보를 보호하고 사이트의 신뢰도를 높이기 위해 HTTPS를 사용합니다. 특히 로그인, 결제 등 민감한 정보를 다루는 사이트에서는 HTTPS가 필수적입니다.


HTTPS는 텍스트를 암호화한다. (공개키 암호화 방식으로!) : [공개키 설명](https://github.com/kim6394/tech-interview-for-developer/blob/master/Computer%20Science/Network/%EB%8C%80%EC%B9%AD%ED%82%A4%20%26%20%EA%B3%B5%EA%B0%9C%ED%82%A4.md)
----


<br>
=== 💡 개발자 핵심 Point ===


<br>
* '''HTTP'''는 웹의 기본 통신 방식이며, '''HTTPS'''는 여기에 보안 계층을 추가한 것입니다.
 
* 백엔드 개발자는 HTTP 요청 메서드(GET, POST, PUT, DELETE 등)와 상태 코드(200, 404, 500 등)의 의미를 명확히 이해해야 합니다.
===== HTTPS 통신 흐름 =====
* 웹 서비스를 배포할 때는 반드시 신뢰할 수 있는 기관에서 '''SSL/TLS 인증서를 발급받아 HTTPS를 적용'''해야 합니다.
 
* 최신 브라우저들은 HTTP 사이트에 대해 '주의 요함' 경고를 표시하며, 검색 엔진 최적화(SEO)에서도 HTTPS 사이트에 가산점을 줍니다.
1) 애플리케이션 서버(A)를 만드는 기업은 HTTPS를 적용하기 위해 공개키와 개인키를 만든다.
 
2) 신뢰할 수 있는 CA 기업을 선택하고, 그 기업에게 내 공개키 관리를 부탁하며 계약을 한다.
 
'''''CA란?''''' : Certificate Authority로, 공개키를 저장해주는 신뢰성이 검증된 민간기업
 
3) 계약 완료된 CA 기업은 해당 기업의 이름, A서버 공개키, 공개키 암호화 방법을 담은 인증서를 만들고, 해당 인증서를 CA 기업의 개인키로 암호화해서 A서버에게 제공한다.
 
4) A서버는 암호화된 인증서를 갖게 되었다. 이제 A서버는 A서버의 공개키로 암호화된 HTTPS 요청이 아닌 요청이 오면, 이 암호화된 인증서를 클라이언트에게 건내준다.
 
5) 클라이언트는 `main.html` 파일을 달라고 A서버에 요청했다고 가정하자. HTTPS 요청이 아니기 때문에 CA기업이 A서버의 정보를 CA 기업의 개인키로 암호화한 인증서를 받게 된다.
 
CA 기업의 공개키는 브라우저가 이미 알고있다. (세계적으로 신뢰할 수 있는 기업으로 등록되어 있기 때문에, 브라우저가 인증서를 탐색하여 해독이 가능한 것)
 
6) 브라우저는 해독한 뒤 A서버의 공개키를 얻게 되었다. 이제 A서버와 통신할 대는 얻은 A서버의 공개키로 암호화해서 요청을 날리게 된다.
 
<br>
 
HTTPS도 무조건 안전한 것은 아니다. (신뢰받는 CA 기업이 아닌 자체 인증서 발급한 경우 등)
 
이때는 HTTPS지만 브라우저에서 `주의 요함`, `안전하지 않은 사이트`와 같은 알림으로 주의 받게 된다.
 
<br>
 
##### [참고사항]
 
[링크](<https://jeong-pro.tistory.com/89>)

2025년 9월 6일 (토) 05:05 판

🌐 HTTP & HTTPS

HTTP (HyperText Transfer Protocol)는 월드 와이드 웹(WWW)에서 클라이언트(웹 브라우저)와 서버가 HTML 문서와 같은 리소스를 주고받기 위한 통신 규약(약속)입니다. 웹 통신의 가장 기본적인 토대입니다.

HTTPS (HTTP Secure)는 HTTP의 보안이 강화된 버전입니다. 모든 통신 내용이 SSL/TLS 프로토콜을 통해 암호화되어, 중간에서 데이터를 가로채더라도 내용을 알 수 없습니다.


🧐 HTTP의 특징

  • 비연결성 (Connectionless) : 클라이언트가 요청을 보내고 서버가 응답을 하면, 바로 연결을 끊습니다. 이를 통해 서버 자원을 효율적으로 사용할 수 있습니다.
  • 무상태 (Stateless) : 서버는 클라이언트의 이전 요청 상태를 기억하지 않습니다. 각 요청은 완전히 독립적으로 처리됩니다. (상태를 유지하기 위해 쿠키, 세션 등을 사용합니다.)

🔒 HTTPS의 필요성

구분 HTTP HTTPS
보안 통신 내용이 암호화되지 않아 중간자 공격(MITM)에 취약 모든 내용이 암호화되어 안전
신뢰성 접속한 사이트가 진짜인지 위조된 사이트인지 확인 불가 SSL/TLS 인증서를 통해 신뢰할 수 있는 사이트임을 증명
URL `http://` 로 시작 `https://` 로 시작 (자물쇠 아이콘 표시)

오늘날 대부분의 웹사이트는 사용자의 개인정보를 보호하고 사이트의 신뢰도를 높이기 위해 HTTPS를 사용합니다. 특히 로그인, 결제 등 민감한 정보를 다루는 사이트에서는 HTTPS가 필수적입니다.


💡 개발자 핵심 Point

  • HTTP는 웹의 기본 통신 방식이며, HTTPS는 여기에 보안 계층을 추가한 것입니다.
  • 백엔드 개발자는 HTTP 요청 메서드(GET, POST, PUT, DELETE 등)와 상태 코드(200, 404, 500 등)의 의미를 명확히 이해해야 합니다.
  • 웹 서비스를 배포할 때는 반드시 신뢰할 수 있는 기관에서 SSL/TLS 인증서를 발급받아 HTTPS를 적용해야 합니다.
  • 최신 브라우저들은 HTTP 사이트에 대해 '주의 요함' 경고를 표시하며, 검색 엔진 최적화(SEO)에서도 HTTPS 사이트에 가산점을 줍니다.