Spring: javax.net.ssl.SSLHandshakeException

calico·2025년 8월 8일

Error

목록 보기
6/10

javax.net.ssl.SSLHandshakeException


  • 이 오류는 Gradle Wrapper가 Gradle 배포 파일(gradle-7.6-bin.zip)을 다운로드하려 할 때 신뢰된 SSL 인증서를 사용하지 못해서 발생합니다.

    • 즉, 인증서 체인(PKIX path)을 신뢰할 수 없다는 것입니다.



원인


  1. 사내 프록시 혹은 사설 인증서 환경에서 자주 발생

  2. PC에 Gradle 공식 서버 인증서가 신뢰되지 않아서(보통 루트 CA 인증서 미설치/만료 등)

  3. 네트워크에서 SSL 통신을 가로채는 프록시 장비(예: 사내 보안장비) 때문



해결 방법


[해결 완료] 1. 임시 우회법: 수동으로 Gradle 배포본 다운로드 후 지정


  1. Gradle Distributions Archive에서
    gradle-7.6-bin.zip 파일을 다운로드

  2. 프로젝트 내에 gradle/wrapper/gradle-wrapper.properties 파일을 열고

    • URL 경로의 distributionUrl 부분 수정 혹은 위에서 다운로드한 파일을C:\Users\kah\.gradle\wrapper\dists\gradle-7.6-bin\ 같은 경로에 압축 해제(폴더는 시스템마다 다름)
  3. 다시 .\gradlew build 명령 실행



2. 시스템 신뢰 인증서 등록


1) 사내 프록시/방화벽 환경이면


  • 사내 프록시의 루트 인증서를 PC의 신뢰할 수 있는 루트 인증서 저장소에 등록 필요 (회사 IT 부서 문의)



B) JDK 후보


  • 일반적으로 JDK별로 신뢰하는 인증서 키스토어가 있습니다. 프록시에서 발급한 자체 CA인증서라면 아래 방법 필요
  1. 프록시(혹은 사설CA)에서 CA root 인증서(.crt) 파일을 받음

  2. 다음 명령으로 JDK의 cacerts에 등록 (예: window 기준 C:\Program Files\Java\jdk-19)

    keytool -import -trustcacerts -keystore "C:\Program Files\Java\jdk-19\lib\security\cacerts" -storepass changeit -alias myproxyCA -file 사내CA인증서.crt
  3. 등록시 비밀번호 changeit (변경 안한 기본값)

  4. 시스템, 혹은 IDE 재시작



3. Gradle에 --no-daemon --stacktrace --debug 옵션 추가 과정을 추적


  • 상황 파악 및 추가 로그 확인에 유용



4. 네트워크 프록시 직접 지정 (회사 환경용)


  • gradle.properties 또는 명령줄로 프록시 지정
systemProp.http.proxyHost=프록시주소
systemProp.http.proxyPort=포트번호
systemProp.https.proxyHost=프록시주소
systemProp.https.proxyPort=포트번호



가장 권장하는 방법


  • 회사/기관의 환경이면 IT 부서에 문의하여 프록시 장치가 사용하는 루트 CA 인증서를 JDK에 등록하는 것을 추천합니다.

  • 임시로 쓸 수 있는 방법은 수동으로 Gradle zip 파일을 다운로드하고 압축 풀어 사용하는 것입니다.



profile
개인 블로그

0개의 댓글