< 참고 Reference >
AWS: HTTP와 HTTPS의 차이점은 무엇인가요?
Http와 Https 이해와 차이점 그리고 오해(?)
CLOUDFLARE: HTTP가 안전하지 않은 이유는? | HTTP와 HTTPS의 비교
CLOUDFLARE: 암호화란?
웹 브라우저의 렌더링이란?
HTTP와 HTTPS 차이
HTTP와 HTTPS의 개념과 차이
정보통신기술용어해설: HTTP
HTTPS 통신 과정 쉽게 이해하기
HTTP와 HTTPS의 차이점과 보안성
SSL 인증서 신청 및 설치 방법
CHATGPT

🌐 HTTP와 HTTPS란 무엇일까?
HTTP와 HTTPS는 인터넷에서 데이터를 주고받는 데 사용되는 응용 계층(Application Layer)의 프로토콜이다.
두 프로토콜은 웹 브라우저와 서버 간의 통신 방식을 정의하는데, 보안 측면에서 중요한 차이가 존재한다.
🌐 HTTP(HyperText Transfer Protocol)는
데이터를 텍스트 형태로 전송하는 기본 프로토콜이다.
특징
한계

HTTP는 클라이언트(주로 웹 브라우저)와 서버 간의 요청(Request)과 응답(Response)을 기반으로 동작한다.
동작 예시
1. 웹 브라우저에서 http://example.com/index.html 요청
2. 요청: 클라이언트가 GET /index.html 요청을 보냄.
요청 메시지의 구성 → 요청 메서드(GET/POST/PUT/DELETE), URL, HTTP 버전, Header, Body(PUT/POST의 경우)
사용자의 브라우저에서 생성된 아래 텍스트 섹션은 인터넷을 통해 전송되는데,
문제는 연결을 모니터링하는 모든 사람이 읽을 수 있는 일반 텍스트로 전송된다는 것!
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
3. 응답: 서버는 index.html 파일을 찾아서 클라이언트에게 보냄.
200 OK, 404 NOT FOUND), HTTP 버전, Header, Body(요청한 리소스) HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>
4. 렌더링: 클라이언트는 받은 HTML을 기반으로 화면에 표시.
5. 추가 요청: HTML에 포함된 이미지, CSS, JS 파일 등을 추가로 요청.
예시: 네이버 메인 홈페이지에서 F12

위 사진은 네이버 홈페이지에서 F12 개발자 도구를 활용해 네트워크 트래픽을 확인하는 과정 중 일부이다.
응답/요청 헤더를 캡처해보았다.
🔍 1. 비연결성 (Stateless)
▷ 한 번 요청하고 응답을 받으면, 클라이언트와 서버는 서로 "더 이상 연결된 상태가 아니야!"라고 생각
🔍 2. 무상태성
▷ "서버는 이전 요청에서 무슨 일이 있었는지 몰라. 내가 뭘 요청했는지 매번 알려줘야 해!"
🌐 HTTPS(HyperText Transfer Protocol Secure)는
HTTP에 SSL(Secure Sockets Layer)/TLS(Transport Layer Security)라는 암호화 계층을 추가한 프로토콜이다.
특징

장점
왜 사용할까?
🔍 데이터 보호: 개인정보, 비밀번호, 금융 정보 등의 민감한 데이터를 보호한다
🔍 사용자 신뢰 구축: HTTPS를 사용하는 웹사이트는 사용자가 더 신뢰할 가능성이 높다
🔍 규제 준수: 일부 산업(예: 금융, 의료)에서는 HTTPS 사용이 필수이다
TLS/SSL은 HTTP의 특성을 보완하기 위해 추가되는 보안 계층이며, HTTP와는 동작 방식이 다르다.
1. TLS/SSL의 연결 유지

따라서 TLS 자체는 연결성을 유지하며, 비연결적인 HTTP와는 다르다.
2. TLS/SSL에서의 상태 관리
HTTP와 달리, TLS는 세션 재사용(Session Resumption) 등을 통해 상태를 일시적으로 유지할 수 있다.
✅ 핵심: TLS 핸드셰이크는 처음 연결 때만 발생하며, 이후 세션 재사용으로 빠른 연결이 가능하다.
HTTP는 여전히 비연결적이고 무상태적이지만, TLS가 그 위에 보안 계층으로 동작하며, 연결성과 상태를 제공!

클라이언트가 처음 HTTP 요청을 보내기 전에, HTTPS 연결을 설정하기 위한 SSL/TLS 핸드셰이크 과정이 먼저 진행된다.
이 과정에서 클라이언트와 서버는 서로 인증하고, 안전한 세션키를 공유한 후에야 요청이 처리된다.
🔑 HTTPS는 대칭키 암호화와 비대칭키 암호화를 모두 사용하여 빠른 연산 속도와 안정성을 모두 얻고 있다.
🔑 세부 과정
✅ 비대칭키는 세션키 교환용, 대칭키는 데이터 통신용
✅ HTTPS는 클라이언트와 서버 간 TLS 핸드셰이크 후, 세션키 공유가 완료된 상태에서 요청과 응답을 처리

서버는 일반적으로 인증된 기관(Certificate Authority)에 공개키를 전송하여 인증서를 발급받는다.

🔑 인증서에는 A 기업의 공개키가 포함되어 있으므로, A 기업의 공개키라고 봐도 무방하다.
🔑 또한 브라우저에는 인증된 CA의 정보들이 사전에 등록되어 있어
인증된 CA의 인증서가 아닐 경우에는(= 인증서가 유효하지 않은 경우) NOT SECURE로 브라우저에서 보여지게 된다.

즉, HTTPS는 TLS(/SSL)를 사용하여 HTTP 요청과 응답을 암호화하므로, 공격자는 텍스트 대신 무작위로 보이는 문자를 보게 된다.

🔍 모든 HTTP 요청과 응답이 이 세션 키로 암호화되므로, 통신을 가로채는 사람은 일반 텍스트가 아닌 임의의 문자 문자열만 볼 수 있다.
✅ 1. A기업이 HTTP 애플리케이션에 HTTPS를 적용하기 위해 공개키/개인키 생성
✅ 2. CA에 인증서 발급 요청
✅ 3. CA가 인증서를 생성하고 CA의 개인키로 서명하여 제공
✅ 4. A기업이 인증서를 서버에 설치 및 제공
✅ 5. 브라우저가 인증서를 검증
✅ 6. 브라우저가 서버의 공개키를 사용해 세션키를 공유

HTTPS는 HTTP 프로토콜에 SSL/TLS 암호화 계층을 추가한 형태이다.




보안 강화를 위한 주요 기능
🔍 암호화 Encryption: 데이터가 클라이언트와 서버 사이에서 이동 중에 노출되지 않도록 암호화
🔍 인증 Authentication: SSL/TLS 인증서를 통해 서버가 신뢰할 수 있는 대상임을 보장
🔍 데이터 무결성 Data Integrity: 데이터가 전송 중에 변조되지 않았음을 확인
SSL은 과거에 사용되던 데이터 암호화 프로토콜 → TLS는 SSL의 업그레이드 버전으로, 현재 널리 사용되는 보안 표준
예시: 구글 인증서 메뉴

위 이미지는 구글 인증서를 보여주는 창인 것 같다
인증서 발급 기관과 공개키, 인증서를 보여준다
예시: 네이버 메인 홈페이지에서 F12

위 이미지는 네이버 페이지의 보안에 대해 알려주는 창인 것 같다.
HTTPS 설정과 인증서, 연결 인증 등등에 대해 위에서 알아본 내용이 보인다.
| 특징 | HTTP | HTTPS |
|---|---|---|
| 보안 | 암호화 없음 | SSL/TLS로 암호화 |
| 속도 | 상대적으로 빠름 | 암호화로 인해 약간 느림 |
| 포트 | 80번 | 443번 |
| 신뢰성 | 보안 취약 | 신뢰할 수 있는 통신 제공 |
| 주소 표시 | http:// 로 시작 | https:// 로 시작 |
| 사용 사례 | 비보안 정보 전송 (일반 콘텐츠 등) | 민감한 정보 전공 (로그인, 결제 등) |
HTTP는 간단하고 빠르지만 → 보안이 취약하다
HTTPS는 보안을 강화해 → 데이터 보호에 적합한 프로토콜이다
특히, 민감한 정보를 다루거나 사용자의 신뢰를 얻고자 하는 경우 → HTTPS를 사용하는 것이 필수적이다.
현재 웹 환경에서는 HTTPS가 사실상 표준으로 자리 잡았으며, 대부분의 웹사이트는 HTTPS🌐를 기본으로 채택한다.
HTTP는 데이터를 일반 텍스트로 전송하지만, HTTPS는 SSL/TLS를 통해 암호화된 데이터를 전송한다.
HTTPS는 서버와 클라이언트 간에 인증서 교환과 암호화 키 설정을 위한 절차가 추가된다.