Tan Kim

ssl-tls

SSL / TLS

  • SSL (Secure Sockets Layer) — 구버전, 현재 사용 안 함
  • TLS (Transport Layer Security) — SSL의 후속, 현재 표준
  • 일반적으로 "SSL"이라고 부르지만 실제로는 TLS 사용

TLS 핸드셰이크 흐름

Client                          Server
  │── ClientHello ────────────▶│  (지원 TLS 버전, 암호화 방식 목록)
  │◀── ServerHello ────────────│  (선택된 버전, 암호화 방식)
  │◀── Certificate ────────────│  (서버 인증서)
  │◀── ServerHelloDone ────────│
  │── ClientKeyExchange ──────▶│  (세션 키 교환)
  │── ChangeCipherSpec ────────▶│
  │── Finished ───────────────▶│
  │◀── ChangeCipherSpec ────────│
  │◀── Finished ────────────────│
  │═══════ 암호화 통신 시작 ══════│

인증서 종류

종류 설명 용도
DV (Domain Validation) 도메인 소유 확인 일반 서비스
OV (Organization Validation) 도메인 + 조직 확인 기업 서비스
EV (Extended Validation) 엄격한 조직 검증 금융, 공공기관
와일드카드 *.example.com 서브도메인 모두 커버 다수의 서브도메인
Let's Encrypt 무료 DV 인증서, 90일 유효 개인/소규모 서비스

TLS 버전

버전 상태
SSL 3.0 폐기 (POODLE 취약점)
TLS 1.0 / 1.1 폐기 권고
TLS 1.2 현재 널리 사용
TLS 1.3 최신 표준, 핸드셰이크 1-RTT로 단축

OpenSSL 명령어

# 자체 서명 인증서 생성 (개발용)
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
 
# 인증서 정보 확인
openssl x509 -in cert.pem -text -noout
 
# 원격 서버 인증서 확인
openssl s_client -connect example.com:443
 
# 인증서 만료일 확인
openssl x509 -in cert.pem -noout -enddate
 
# CSR (인증서 서명 요청) 생성
openssl req -new -newkey rsa:2048 -nodes -keyout key.pem -out request.csr

메모