SSL/TLS 인증서와 HTTPS 보안 완벽 가이드: 암호화부터 인증서 관리까지
목차
- SSL/TLS란 무엇인가?
- TLS 핸드셰이크 과정
- 인증서 종류와 선택
- Let’s Encrypt와 무료 인증서
- 데이터센터 환경 구현
- mTLS (상호 TLS)
- 인증서 관리 자동화
- 결론
SSL/TLS란 무엇인가?
개념 정의
💡 TLS (Transport Layer Security): 인터넷상에서 데이터를 암호화하여 안전하게 전송하는 프로토콜입니다. SSL(Secure Sockets Layer)의 후속 버전으로, 현재 TLS 1.2와 TLS 1.3이 주로 사용됩니다.
암호화의 세 가지 목적
| 목적 | 설명 | 보장하는 속성 |
|---|---|---|
| 기밀성 | 데이터 읽기 방지 | 제3자가 내용을 볼 수 없음 |
| 무결성 | 데이터 변조 방지 | 데이터가 중간에 수정되지 않음 |
| 인증 | 통신 상대 확인 | 진짜 서버와 통신함을 보장 |
TLS 핸드셰이크 과정
TLS 1.2 핸드셰이크
📊 TLS 핸드셰이크 과정
클라이언트 서버
│ │
│── ClientHello ────────────────▶│ (지원하는 암호화 방식, 버전)
│ │
│◀─ ServerHello ──────────────── │ (선택한 암호화 방식)
│◀─ Certificate ──────────────── │ (서버 인증서)
│◀─ ServerHelloDone ─────────── │
│ │
│── ClientKeyExchange ─────────▶│ (프리마스터 시크릿 전송)
│── [ChangeCipherSpec] ────────▶│
│── Finished ──────────────────▶│
│ │
│◀─ [ChangeCipherSpec] ─────── │
│◀─ Finished ───────────────── │
│ │
│========= 암호화 통신 시작 ======│
TLS 1.3 개선사항
⚡ TLS 1.3 주요 개선
- 핸드셰이크 단축: 1-RTT (기존 2-RTT)
- 취약한 암호화 제거: SHA-1, MD5, RSA 키 교환 제외
- Perfect Forward Secrecy: 모든 연결에 적용
- 0-RTT Resumption: 재연결 시 즉시 시작
인증서 종류와 선택
검증 수준별 분류
| 종류 | 검증 수준 | 발급 시간 | 적합한 경우 |
|---|---|---|---|
| DV | 도메인 소유권 | 즉시 | 일반 웹사이트 |
| OV | 조직 검증 | 1-3일 | 기업 사이트 |
| EV | 확장 검증 | 1-2주 | 금융, 쇼핑몰 |
도메인 범위별 분류
| 종류 | 설명 | 예시 |
|---|---|---|
| 단일 도메인 | 하나의 도메인만 보호 | www.example.com |
| 와일드카드 | 모든 하위 도메인 | *.example.com |
| SAN | 여러 도메인 | example.com, example.net |
Let’s Encrypt와 무료 인증서
Certbot 사용법
# Certbot 설치 sudo apt install certbot python3-certbot-nginx # NGINX 플러그인으로 인증서 발급 sudo certbot --nginx -d example.com -d www.example.com # 자동 갱신 테스트 sudo certbot renew --dry-run # 자동 갱신 설정 (cron) 0 3 * * * /usr/bin/certbot renew --quiet
Let’s Encrypt 제한사항
| 제한 | 값 | 설명 |
|---|---|---|
| 인증서/도메인 | 주 50개 | 등록된 도메인당 |
| 주문/계정 | 주 300개 | 계정당 주문 수 |
| 갱신 | 주 5회 | 동일 인증서 갱신 시도 |
데이터센터 환경 구현
NGINX SSL 설정
server {
listen 443 ssl http2;
server_name example.com;
# 인증서 설정
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# TLS 버전 (취약한 버전 비활성화)
ssl_protocols TLSv1.2 TLSv1.3;
# 암호화 스위트
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers on;
# HSTS
add_header Strict-Transport-Security "max-age=63072000" always;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# HTTP → HTTPS 리다이렉트
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
mTLS (상호 TLS)
mTLS 개념
💡 mTLS (Mutual TLS): 서버와 클라이언트가 모두 인증서를 제시하여 상호 인증하는 방식입니다. 내부 서비스 간 통신에 주로 사용됩니다.
mTLS 사용 사례
| 사례 | 설명 | 적용 위치 |
|---|---|---|
| 서비스 메쉬 | Pod 간 통신 인증 | Istio, Linkerd |
| API 인증 | 클라이언트 인증 | 내부 API |
| IoT 디바이스 | 디바이스 인증 | IoT 게이트웨이 |
| B2B 통합 | 파트너 인증 | EDI, API 연계 |
인증서 관리 자동화
주요 도구
| 도구 | 특징 | 사용 사례 |
|---|---|---|
| Certbot | Let’s Encrypt 공식 | 단일/소규모 서버 |
| Cert-Manager | Kubernetes 네이티브 | K8s 환경 |
| Vault | HashiCorp, PKI | 엔터프라이즈 |
| acme.sh | Shell 스크립트 | 가벼운 자동화 |
Kubernetes cert-manager
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: example-com
namespace: default
spec:
secretName: example-com-tls
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
dnsNames:
- example.com
- www.example.com
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: admin@example.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: nginx
결론
TLS/SSL은 현대 웹 보안의 필수 요소입니다. 무료 인증서 발급 도구와 자동화 솔루션을 활용하여 효율적으로 HTTPS를 구현하고 관리할 수 있습니다.
핵심 요약
🌟 HTTPS 성공 공식
TLS 1.3 + 강력한 암호화 스위트 + 자동 인증서 관리 = 안전한 통신 🔒
관련 키워드: SSL, TLS, HTTPS, 인증서, Certificate, Let’s Encrypt, CA, Certificate Authority, 암호화, 보안, 데이터센터, 인증서 관리, mTLS, Mutual TLS, PKI, 오픈SSL, Certbot, Cert-Manager, Vault, DV, OV, EV, Wildcard, SAN, HSTS, OCSP, Perfect Forward Secrecy, 암호화 통신
참고 자료:
- Let’s Encrypt Documentation
- Mozilla SSL Configuration Generator
- SSL Labs SSL Test
- Nginx SSL Best Practices
📝 본 포스트는 2025년 10월 기준 정보를 바탕으로 작성되었습니다.

