카테고리 없음

🔐 Default JDK Truststore란? - HTTPS 통신의 핵심을 이해하자

idea9329 2025. 4. 30. 15:14
반응형

 

Java 개발을 하다 보면 SSL/TLS 통신에서 인증서 검증 문제가 발생할 수 있습니다. 이때 자바가 사용하는 기본 인증서 저장소가 바로 default JDK truststore입니다. 이 글에서는 truststore가 무엇인지, 기본 truststore의 위치와 역할, 인증서 추가 방법까지 쉽고 자세하게 설명합니다.


📌 Truststore란?

Truststore는 Java에서 신뢰할 수 있는 인증 기관(CA)의 인증서를 저장하는 파일입니다. HTTPS나 기타 보안 통신을 할 때 서버의 인증서가 믿을 수 있는지 판단하기 위해 사용됩니다.

Java는 기본적으로 여러 글로벌 인증기관의 인증서를 포함한 기본 truststore를 제공합니다.


✅ Default JDK Truststore의 위치

Java를 설치하면 자동으로 생성되는 truststore 파일은 보통 아래 경로에 존재합니다:

$JAVA_HOME/lib/security/cacerts

JAVA_HOME은 JDK가 설치된 디렉토리를 의미합니다. 예: /usr/lib/jvm/java-17-openjdk 

기본 비밀번호는 다음과 같습니다:

changeit

🔍 어떤 인증서가 들어있을까?

cacerts 파일에는 VeriSign, DigiCert, Let's Encrypt 같은 글로벌 CA 인증서들이 들어 있습니다. Java는 이 인증서들과 매칭되는 경우에만 서버의 인증서를 신뢰하고 통신을 허용합니다.


🧪 HTTPS 통신 시 동작 원리

  1. 클라이언트(Java 애플리케이션)가 HTTPS 요청을 보냅니다.
  2. 서버는 자신의 SSL 인증서를 제공합니다.
  3. Java는 해당 인증서의 발급자가 truststore 안에 있는지 확인합니다.
  4. 인증서가 신뢰되지 않으면 통신은 실패(SSLHandshakeException)합니다.

🔧 사내 인증서나 자체 CA를 추가하는 방법

사내 시스템처럼 Java가 기본적으로 신뢰하지 않는 인증서와 통신하려면, 해당 인증서를 truststore에 수동으로 추가해야 합니다.

▶ keytool 명령어 예시:

keytool -import -trustcacerts -alias mycert \
  -file /path/to/mycert.crt \
  -keystore $JAVA_HOME/lib/security/cacerts \
  -storepass changeit
  • mycert.crt: 추가할 인증서 파일
  • alias: 인증서 구분을 위한 이름
  • storepass: 기본은 changeit (변경 가능)

🧰 커스텀 Truststore를 따로 관리하고 싶다면?

기본 cacerts 파일을 건드리지 않고, 별도 truststore를 만들어서 지정할 수도 있습니다.

-Djavax.net.ssl.trustStore=/path/to/mytruststore.jks \
-Djavax.net.ssl.trustStorePassword=mypassword

이 방법은 민감한 시스템에서 보안을 강화하거나, 다양한 환경에서 인증서를 분리 관리할 때 유용합니다.


📌 요약

항목설명

파일명 cacerts
위치 $JAVA_HOME/lib/security/cacerts
기본 비밀번호 changeit
역할 SSL 인증서의 유효성 검증
인증서 추가 방법 keytool 명령어 사용

🔎 자주 묻는 질문(FAQ)

Q. truststore와 keystore 차이는 뭔가요?

  • truststore는 신뢰할 수 있는 외부 인증서(CA)를 저장합니다.
  • keystore는 내 서버 또는 앱의 개인 키와 인증서를 저장합니다.

Q. cacerts 수정해도 되나요?

  • 가능은 하지만 권장하지 않습니다. 백업 후 수정하거나, 별도 truststore를 사용하는 것이 안전합니다.

📝 마무리

default JDK truststore는 Java 보안 통신의 핵심입니다. 인증서 문제로 통신이 실패했다면, 이 truststore가 원인일 수 있습니다. 기본 구조와 관리 방법만 이해해도 SSL 문제 해결이 훨씬 쉬워질 거예요.

도움이 되셨다면 이 글을 북마크하거나 공유해주세요!

반응형