SSL/TLS 인증서와 HTTPS 보안 완벽 가이드: 암호화부터 인증서 관리까지

목차

  1. SSL/TLS란 무엇인가?
  2. TLS 핸드셰이크 과정
  3. 인증서 종류와 선택
  4. Let’s Encrypt와 무료 인증서
  5. 데이터센터 환경 구현
  6. mTLS (상호 TLS)
  7. 인증서 관리 자동화
  8. 결론

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월 기준 정보를 바탕으로 작성되었습니다.

Ike Tatsuo

토요컨설턴시서비시스코리아(주)의 CTO를 맞고 있는 Ike 입니다.
비용효율을 최우선으로 고려하여 SMB고객에게 엔터프라이즈급 품질의 서비스를 제공하는 방법에 흥미를 가지고 있습니다. 또한, 풍부한 현장경험을 바탕으로 가장 현실적인 대안을 제시하고자 노력하고 있습니다.