본문으로 건너뛰기

PKI 와 X.509 인증서

공개키 기반구조 (PKI) 와 X.509 인증서에 대해 알아봅니다.


PKI (Public Key Infrastructure) 란?

개념

PKI는 공개키 암호화 기술을 안전하게 사용하기 위한 기반 구조입니다. “이 공개키가 정말로 해당 도메인의 주인의 것인가?“라는 질문에 대해 신뢰할 수 있는 제3자(CA)가 보증하는 시스템입니다.

PKI 의 구성 요소

구성 요소역할비고
CA (인증 기관)인증서 발급, 서명, 관리DigiCert, Let’s Encrypt 등
RA (등록 기관)신청자 신원 확인, 도메인 검증CA를 대신하여 심사 수행
인증서 저장소발급된 인증서 저장 및 공개누구나 열람 가능
CRL (폐기 목록)유출/만료 전 폐기된 인증서 목록CA가 정기적으로 발행
OCSP (온라인 상태 프로토콜)실시간 인증서 유효성 조회CRL보다 빠른 응답 제공
최종 사용자 (End Entity)인증서 소유자 (서버, 개인)키 쌍 생성 및 개인키 보관

PKI 동작 흐름

    sequenceDiagram
    participant U as 사용자 (User)
    participant CA as 인증 기관 (CA/RA)
    participant R as 저장소 (Repository)
    
    Note over U: Step 1: 키 쌍 생성 (공개키/개인키)
    U->>CA: Step 2: 인증서 신청 (CSR 전달)
    Note over CA: Step 3: 신원 확인 및 도메인 검증
    Note over CA: Step 4: CA 개인키로 인증서 서명
    CA->>U: Step 5: 발급된 인증서 전달
    CA->>R: Step 6: 발급/폐기 정보 업데이트
  

X.509 인증서 규격

1. X.509 란?

X.509는 PKI에서 사용하는 디지털 인증서의 표준 규격입니다. IETF의 RFC 5280에 상세히 정의되어 있으며, 우리가 사용하는 거의 모든 SSL/TLS 인증서가 이 규격을 따릅니다.

2. 인증서 내부 구조 (V3)

필드명설명예시
Version인증서 버전 (현재 V3)v3 (2)
Serial NumberCA가 부여한 고유 번호0a:1b:2c…
Signature Algorithm서명에 사용된 알고리즘sha256WithRSAEncryption
Issuer발급자(CA) 정보CN=DigiCert Global Root CA
Validity유효 기간2024-01-01 ~ 2025-01-01
Subject소유자 정보 (도메인 등)CN=*.google.com
Subject Public Key Info소유자 공개키 및 알고리즘RSA (2048 bit), 공개키 값
Extensions (V3)추가 확장 정보 (SAN 등)Subject Alternative Name

3. 주요 확장 필드 (Extensions)

  • Key Usage: 공개키의 용도 (Digital Signature, Key Encipherment 등)
  • Subject Alternative Name (SAN): 하나의 인증서로 여러 도메인을 보호할 때 사용 (중요!)
  • Basic Constraints: 이 인증서가 다른 인증서를 발급할 수 있는 CA인지 여부

인증서 인코딩 및 확장자

1. 인코딩 방식

방식설명특징
DER이진(Binary) 인코딩컴퓨터가 읽기 좋음, 메모장으로 확인 불가
PEMBase64 텍스트 인코딩사람이 읽기 좋음, -----BEGIN CERTIFICATE-----로 시작

2. 주요 확장자 구분

  • .crt, .cer: 인증서 파일 (주로 PEM 또는 DER)
  • .key: 개인키 파일 (절대 유출 금지)
  • .csr: 인증서 서명 요청 파일
  • .pfx, .p12: 인증서와 개인키를 하나로 합친 파일 (암호 보호)

Kubernetes 에서의 활용

Kubernetes의 모든 컴포넌트(kube-apiserver, kubelet, etcd 등)는 서로 통신할 때 X.509 인증서를 사용하여 상대방을 확인하고 데이터를 암호화합니다.

  • Client Certificate: 사용자가 API Server에 접속할 때 신원 증명용으로 사용
  • Server Certificate: API Server가 자신의 신원을 클라이언트에게 증명할 때 사용

PKI 구조와 X.509 규격을 이해하면 Kubernetes의 인증서 기반 보안 체계를 완벽히 파악할 수 있습니다.