lty's Blog

CA 인증서와 자바 API 호출 본문

Backend

CA 인증서와 자바 API 호출

LIMTAEYANG 2026. 1. 8. 00:38
1. CA 인증서란? (Certificate Authority)

 

인증서를 발급해 주는 공인/사설 기관

대표적인 CA 기관

  • DigiCert
  • GlobalSign
  • Sectigo
  • Let`s Encrypt
  • 이외 사내 CA 

CA 인증서는 신뢰할 수 있다는 증명서로 HTTPS, TLS 통신에서 이 서버 인증서를 믿어도 되는가? 를 판단하는 기준 

자바 JDK에서는 OS 인증서 저장소를 안 쓰고, 자기만의 truststore를 사용한다. 

 

자바 버전에 따라 기본으로 포함된 CA인증서가 달라 타사 외부 API 호출 시 SSL 오류가 날 수 있음 

(JDK를 빌드할 당시 신뢰된 CA 목록을 기준으로 만들어짐)

Truststore 경로

# JAVA 11 이상
%JAVA_HOME%\lib\security\cacerts

# Java 8 이하
%JAVA_HOME%\jre\lib\security\cacerts

 

CA인증서 미등록으로 인한 SSL 통신 오류 원인 

PKIX path building failed
unable to find valid certification path

 

조치방법으로는 JDK 버전을 11/17 이상 (대부분의 경우 자동 해결) 올리기 또는 타사 CA 인증서 수동 등록 

Window 환경 특정 CA기관 명령어로 확인

keytool -list -v -keystore "%JAVA_HOME%\lib\security\cacerts" -storepass changeit | findstr "DigiCert"
  • keytool : Java에 포함된 인증서 관리도구 (JDK에 bin/keytool.exe 위치)
  • - list 옵션 : Keystore 안에 들어있는 항목 목록 조회 (인증서 내용 확인)
  • - v 옵션 : 상세출력 (있을 시 소유자, 발급자, 유효기간, SHA1/SHA256 지문 확인 가능)
  • - keystore 옵션 : 조회할 인증서 저장소 파일 지정
  • - storepass changeit : keystore 비밀번호 삽입, 옵션 넣지 않을 경우 비밀번호를 물어본다. JAVA 기본값 = changeit
  • findstr "DigiCert" : DigiCert가 포함된 줄만 출력 (DigiCert CA 인증기관 조회)

JDK 15 기준 명령어 조회

특정 CA 기관 인증서 추가 명령어 

keytool -importcert -keystore ${JAVA_HOME}jre/lib/security/cacerts -storepass changeit -trustcacerts -alias #{보관할 이름} -file #{인증서 파일 경로} -noprompt

 

  • - importcert : 키스토어에 새로운 인증서를 추가하겠다는 선언
  • - trustcacerts : 가져오는 인증서를 신뢰할 수 있는 항목으로 간주하는 옵션
  • - alias : 저장소 내에서 이 인증서를 식별할 별명 (중복 불가)
  • - file : 추가하려는 실제 인증서 (.cer, .crt) 파일의 경로 (파일이 위치하는 물리적인 경로)
  • - noprompt : 확인 생략
Comments