JKS(Java KeyStore) 파일 과 JKS 의 키체인
2026. 2. 9. 09:09

1️⃣ JKS 파일이 뭐냐

JKS = Java KeyStore

  • 자바 기반 시스템에서 인증서와 개인키를 저장하는 보관소
  • 파일 하나에 여러 개의 인증서/키를 담을 수 있음
  • 주로 SSL/TLS(HTTPS), 서버 인증, 클라이언트 인증에 사용
server.jks
truststore.jks
keystore.jks

 

2️⃣ JKS 안에 들어가는 것들 (핵심)

JKS에는 엔트리(entry) 가 있고, 타입이 다릅니다.

🔹 1) PrivateKeyEntry (가장 중요)

  • 개인키 + 서버 인증서 + 인증서 체인
  • HTTPS 서버 구동 시 필요
[개인키]
[서버 인증서]
[중간 CA]
[루트 CA]

👉 keystore 용도

 

🔹 2) TrustedCertificateEntry

  • CA 인증서(신뢰용) 만 들어 있음
  • 상대 서버를 믿기 위해 사용

👉 truststore 용도

3️⃣ Keystore vs Truststore (무조건 구분해야 함)

이거 헷갈리면 SSL 문제 100% 터집니다.

구분 KeystoreTruststore Truststore
역할 내가 누구인지 증명 상대를 믿을지 결정
포함 개인키 + 인증서 CA 인증서
사용 예 HTTPS 서버 외부 API 호출
파일명 server.jks trust.jks

📌 한 파일에 둘 다 넣을 수도 있지만
👉 운영에선 보통 분리

4️⃣ 인증서 흐름 (HTTPS 기준)

서버 HTTPS 띄울 때

  1. 서버가 자기 인증서 + 개인키 보유 (keystore)
  2. 클라이언트 접속
  3. 서버 인증서 전달
  4. 클라이언트는 truststore 에서 CA 검증

API Gateway / APIM

  • 인바운드 HTTPS → Gateway keystore
  • 아웃바운드 HTTPS → Gateway truststore

5️⃣ JKS 관련 필수 명령어 (keytool)

🔹 JKS 내용 보기

keytool -list -v -keystore server.jks

🔹 특정 alias 보기

keytool -list -keystore server.jks -alias apim_ssl

🔹 CA 인증서 추가 (truststore)

keytool -import -alias rootca \
 -file rootca.crt \
 -keystore trust.jks

 

6️⃣ JKS ↔ PEM ↔ PKCS12 관계 (실무에서 중요)

요즘은 JKS보다 PKCS12(.p12/.pfx) 가 표준입니다

포맷 설명
JKS 자바 전용
PKCS12 범용(자바/웹서버 공용)
PEM 텍스트(cert/key 분리)

🔹 P12 → JKS

keytool -importkeystore \
 -srckeystore cert.p12 -srcstoretype PKCS12 \
 -destkeystore server.jks -deststoretype JKS

 

1️⃣ JKS에서 “키체인”이 실제로 의미하는 것

보통 누가

“이 JKS에 키체인 들어있어?”

라고 하면 99% 이걸 묻는 겁니다 👇

👉 PrivateKeyEntry 안에 인증서 체인이 제대로 들어있냐

2️⃣ 인증서 체인(Certificate Chain)이란?

서버 인증서는 혼자 신뢰되지 않습니다.
항상 신뢰 사슬(chain) 로 검증됩니다.

 

[서버 인증서]
   ↓
[중간 CA 인증서]
   ↓
[루트 CA 인증서]

 

이 묶음 전체를 흔히 키체인이라고 부릅니다.

📌 정확한 용어

  • 개인키 (Private Key)
  • 서버 인증서 (End-Entity Cert)
  • 중간 CA (Intermediate CA)
  • 루트 CA (Root CA)

3️⃣ JKS 구조에서 어디에 들어가 있나

🔹 PrivateKeyEntry 구조

Alias: apim_ssl
Entry type: PrivateKeyEntry
Certificate chain length: 3

 

이게 바로 키체인 있음 상태입니다.

🔹 체인 길이 의미

  • 1 → 서버 인증서만 있음 ❌
  • 2 → 서버 + 중간 CA
  • 3 이상 → 서버 + 중간 CA + 루트 CA ⭕ (권장)

4️⃣ 키체인 없으면 무슨 일이 생기냐

아주 흔한 장애 패턴입니다.

❌ 키체인 누락 시 증상

  • 브라우저: NET::ERR_CERT_AUTHORITY_INVALID
  • Java:
PKIX path building failed
unable to find valid certification path

 

 

'Back-End > Java' 카테고리의 다른 글

Ant 빌드와 MAVEN 빌드 차이(수정필요)  (0) 2026.02.19
JAVA 메타스페이스  (0) 2025.09.17
자바 8 / 17 / 21 버전별 차이점  (0) 2025.06.04
Junit  (0) 2024.12.05
Log4j 란 ??  (0) 2024.12.03