01 / 15
SESSION 35 · Part 7 클라우드/배포

HTTPS와
SSL/TLS

주소창의 자물쇠 🔒 — 통신을 암호화하는 방법

02 / 15
🎯

이 세션에서
배우는 것

🤝
핸드셰이크
TLS 핸드셰이크의 개략적 흐름을 설명한다
📜
인증서 발급
Let's Encrypt로 무료 인증서를 받는 법을 안다
⚠️
HTTP의 위험
평문 전송으로 생기는 보안 문제를 이해한다
03 / 15
💭

HTTPS인가?

HTTP로 로그인하면 아이디와 비밀번호가 평문으로 전송된다.
공용 와이파이에서 누군가가 패킷을 엿보면 그대로 유출된다.

HTTPS는 전송 구간을 암호화해서 중간자가 내용을 봐도 해독할 수 없게 만든다.
브라우저가 🔒을 보여주는 이유다.

04 / 15

HTTP vs HTTPS

📮 HTTP
평문 전송 — 누구나 내용을 볼 수 있음
중간자 공격(MITM)에 취약
로그인 · 결제 정보 탈취 가능
브라우저가 "주의 요함" 경고 표시
🔒 HTTPS
TLS로 암호화된 통신
서버 신원을 인증서로 확인
데이터 위·변조 감지 가능
검색엔진 · 브라우저가 선호
05 / 15
🤝

TLS 핸드셰이크 —
더 깊게 이해하기

브라우저와 서버가 암호화 채널을 만드는 과정은 5단계로 이루어진다.

1
Client Hello
브라우저가 지원하는 TLS 버전과 암호화 방식 목록을 서버에 제안한다.
2
Server Hello + 인증서
서버가 암호화 방식을 선택하고 CA가 서명한 인증서(공개키 포함)를 전송한다.
3
인증서 검증
브라우저가 CA 체인을 따라 인증서의 유효성을 검증한다. 위조된 인증서는 여기서 걸린다.
4
키 교환 → 암호화 시작
공개키로 세션 키를 안전하게 교환하고, 이후 모든 통신은 이 대칭키로 암호화된다.
06 / 15

TLS 핸드셰이크

클라이언트와 서버가 암호화 채널을 만드는 과정.

1
Client Hello
브라우저가 지원하는 TLS 버전과 암호화 방식을 서버에 제안
2
Server Hello + 인증서
서버가 자신의 인증서(공개키 포함)를 전송. 브라우저는 CA 체인으로 검증
3
키 교환
공개키를 이용해 세션용 대칭키를 안전하게 주고받음
4
암호화 통신 시작
이후 모든 요청·응답은 대칭키로 암호화되어 전송 — 훨씬 빠름
07 / 15
📜

SSL 인증서 신뢰 보장 —
실제로는 어떻게?

인증서가 신뢰를 보장하는 과정은 마치 정부가 신분증을 발급하는 것과 같다.

🏛️ CA 발급
Let's Encrypt 서명
🖥️ 서버 설치
Certbot으로 적용
🌐 브라우저 검증
CA 체인 확인
🔒 자물쇠 표시
신뢰 확인 완료

핵심: 브라우저는 인증서를 발급한 CA를 미리 신뢰 목록에 가지고 있어 체인으로 검증한다.

08 / 15

인증서는 무료로 받는다

예전엔 수십만 원이었던 SSL 인증서, 이제는 Let's Encrypt로 무료.

🆓
Let's Encrypt
비영리 CA.
90일 유효, 자동 갱신 권장
🤖
Certbot
인증서 발급·갱신을
자동화하는 CLI 도구
☁️
Cloudflare · Vercel
플랫폼 자체에서
HTTPS를 자동 제공

팁: PaaS를 쓰면 HTTPS는 도메인 연결 즉시 자동 설정되는 경우가 많다.

09 / 15
📱

실생활에서
이렇게 쓰여요

우리가 매일 사용하는 앱과 서비스 속에 HTTPS/SSL이 녹아 있다.

💳
온라인 결제 자물쇠
카드 정보 입력 페이지의 🔒 아이콘은 TLS로 암호화되어 카드 번호가 안전하게 전송됨을 의미한다.
🏦
카카오뱅크 보안
금융 앱의 모든 통신은 HTTPS로 이루어진다. 계좌 정보와 거래 내역이 암호화되어 전송된다.
🌐
크롬 "안전하지 않음" 경고
HTTP 사이트는 크롬이 주소창에 경고를 표시한다. HTTPS 없는 사이트는 신뢰도가 낮아진다.

💡 이 개념이 없다면 공용 와이파이에서 카드 번호가 평문으로 전달되어 탈취된다.

10 / 15
💡

자주 하는
오해 바로잡기

이렇게 생각하기 쉽지만, 실제로는 조금 다릅니다.

❌ 흔한 오해
  • HTTP는 완전히 위험해서 사용하면 안 된다
  • 자물쇠가 있으면 해킹이 불가능하다
  • SSL과 TLS는 같은 것이다
✓ 실제로는
  • 공개 정보를 제공하는 사이트에서는 HTTP도 무관하다. 중요한 건 민감 정보 전송 시
  • 자물쇠는 전송 구간만 보호한다. 서버 자체 취약점은 별개 문제다
  • TLS는 SSL의 개선된 후속 버전이다. SSL 2.0/3.0은 취약점으로 현재 사용 금지
11 / 15
✉️

HTTPS는 봉인된 편지봉투

어려운 암호화도 편지에 빗대면 직관적이다.

📬 편지 비유
HTTP
=
엽서 — 집배원을 포함해 누구나 내용을 볼 수 있음
HTTPS
=
잠긴 금고에 담긴 편지 — 수신자만 열 수 있음
인증서
=
신분증 — "나는 진짜 은행이다"를 증명
CA
=
정부 기관 — 신분증을 발급하고 보증
12 / 15
🤖

이걸 알면
AI와 이렇게 대화해요

HTTPS/TLS를 이해하면 Claude나 ChatGPT를 훨씬 잘 활용할 수 있다.

👤
사이트에 HTTPS 적용하고 싶어요.
🤖
어떤 서버 환경인가요? Nginx? Apache? 클라우드 플랫폼인가요?
👤
Ubuntu + Nginx로 운영 중이에요. Let's Encrypt로 무료 SSL 인증서 발급하고 Nginx에 HTTPS 설정하는 방법 단계별로 알려줘.
🤖
1. certbot 설치: sudo apt install certbot python3-certbot-nginx, 2. 인증서 발급: sudo certbot --nginx -d myapp.com, 3. 자동 갱신 확인: sudo certbot renew --dry-run. 완료 후 HTTPS가 자동 설정됩니다!
13 / 15

이렇게
이해하셨나요?

맞게 이해하셨어요
HTTPS는 전송 중 데이터를 TLS로 암호화해서 도청을 막는다
이렇게는 아니에요
자물쇠가 있으면 서버도 완전히 안전하다
맞게 이해하셨어요
TLS는 SSL의 취약점을 개선한 최신 버전이다
이렇게는 아니에요
HTTP는 절대 사용하면 안 된다

💪 웹 보안의 핵심 원리를 이해하셨습니다. 대단한 성취예요!

14 / 15
📌

핵심 정리

🔒
HTTPS
HTTP + TLS —
암호화된 통신
🤝
핸드셰이크
공개키로 세션키를
안전하게 교환
📜
인증서
CA가 서명한
신원 증명서
🆓
Let's Encrypt
무료 · 자동 갱신
(Certbot)
⚠️
HTTP 위험
평문 전송 —
탈취 가능
🌐
기본값
2020년 이후
HTTPS가 표준
15 / 15
🚀

다음 세션
Session 36 · CI/CD와 자동 배포

서울 서버에 있는 이미지를 미국 사용자가 불러오면 느리다.
전 세계 사용자에게 가까운 서버에서 빠르게 전달하는 방법 — CDN을 알아본다.

💡 기억할 것: 주소창에 🔒이 없으면 로그인하지 않는다.

슬라이드 목록