1). 서버의 공개키는 TLS 인증서에 포함되어 브라우저로 전달됨
2). 브라우저는 이 공개키를 사용하여 '비밀정보(세션 키 등)'를 암호화함
3). 서버는 자신의 '개인키'로 복호화하여 그 비밀정보를 읽음
📌 이 과정은 브라우저 → 서버 방향의 데이터 전송에서만 비대칭키를 씀
(속도 문제 때문에 이후 통신은 대칭키로 전환)
이해를 돕기 위해 CA와 서버가 각각 키 쌍(Public/Private key)을 가지고 있다고 생각해보자.
🔑 서버 키쌍:
서버 공개키 (public key): 인증서에 포함되어 브라우저에 전달됨
서버 개인키 (private key): 서버가 비밀로 보관, 클라이언트는 접근 불가
🏢 CA 키쌍:
CA 공개키: 브라우저와 OS에 미리 설치됨
CA 개인키: 인증서에 디지털 서명할 때 사용됨 (절대 노출되지 않음)
TLS 클라이언트(브라우저)는 일반적으로 공개키를 받은 후, 대칭키(Pre-Master Secret)를 서버의 공개키로 암호화함
개인키로 암호화해서 보낸다는 개념은 TLS에서 사용되지 않음
📌 "암호화는 공개키, 복호화는 개인키"
👉 보안의 핵심은 '비밀을 가진 쪽만 읽을 수 있게 만드는 것'
이 강의에서는 다양한 인증서 파일들이 등장합니다. 헷갈리지 않도록 다음 규칙을 기억하세요:
공개키 인증서 파일은 보통 .crt 또는 .pem 확장자를 사용
예: server.crt, client.pem
개인키 파일은 .key 확장자 또는 이름에 -key가 포함됨
예: server.key, server-key.pem
즉, key라는 단어가 있으면 개인키 파일, 없으면 공개키(인증서) 파일이라고 생각하면 된다.
쿠버네티스 클러스터는 마스터 노드와 워커 노드로 구성되어 있으며,
모든 구성 요소 간 통신은 암호화되어야 하며, TLS로 보안되어야 합니다.
예시:
모든 통신은 TLS를 통해 보호되어야 하며,
따라서 다음과 같은 두 가지 조건이 충족되어야 합니다:
유형 구성 요소 인증서 예시
서버 인증서 kube-apiserver, etcd, kubelet *.crt, *.key
클라이언트 인증서 admin, scheduler, controller, proxy *.crt, *.key
모든 인증서는 하나 이상의 인증 기관(CA)에 의해 서명되야 함
쿠버네티스 클러스터에는 최소 하나의 CA가 필요
경우에 따라 etcd 전용 CA를 분리 가능
예:
클러스터 공통 CA → ca.crt, ca.key
etcd 전용 CA → etcd-ca.crt, etcd-ca.key
예제 에서는 하나의 공통 CA만 사용

👉🏻 이미지 출처 : kodekloud.com