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 띄울 때
- 서버가 자기 인증서 + 개인키 보유 (keystore)
- 클라이언트 접속
- 서버 인증서 전달
- 클라이언트는 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 |