PKIX 인증서 등록
PKIX 인증서 등록
문제 : Exception in thread “main” javax.net.ssl.SSLHandshakeException: PKIX path building failed
회사에서 emulator로 Flutter 프로젝트를 실행하려고 했는데 발생했다.
- Flutter 프로젝트를 실행할 때 Gradle이 소스를 다운받으려 하는데 SSL 인증서 오류가 발생한다
- 프록시 환경이나 방화벽, 사내망 등 네트워크 환경에 따라 발생할 수 있다
- 이 오류는 Gradle이 HTTPS를 통해 소스를 다운로드하려고 할 때, JDK가 해당 사이트의 SSL 인증서를 신뢰하지 않아서 발생한다
해결
1. SSL 인증서 추가
- gradle이 소스를 다운받는 services.gradle.org 접속
- 네트워크 주소 좌측 자물쇠 클릭
- 루트 인증서 선택 → 내보내기
인증서 등록
1
keytool -trustcacerts -keystore {jdk 경로\lib\security\cacerts} -importcert -alias gradle.org-1 -file {다운받은 인증서 경로}
예시
1
keytool -trustcacerts -keystore "%JAVA_HOME%\lib\security\cacerts" -importcert -alias gradle.org-1 -file "C:\Users\sms1875\Downloads\{인증서 이름}.crt"
y 입력 → 인증서 등록
하지만, {jdk 경로}\lib\security\cacerts
에 인증서를 추가해도 PKIX 오류가 계속 발생하였다
2. Android Studio JDK 인증서 추가
local에 설치된 jdk와 별개로, android studio에서는 jdk를 번들로 제공한다. 이 jdk에 인증서를 추가해야 한다.
flutter doctor -v
→ android studio에서 사용하는 경로를 찾아서 인증서를 추가
C:\Program Files\Android\Android Studio\jbr\bin\java
경로로 1번을 수행
3. JDK 변경
다른 방법으로는 Flutter에 환경 변수를 설정하여 JDK를 변경하는 방법이 있다.
- gradle에 맞는 jdk 설치
flutter config --jdk-dir={jdk 설치 경로}
- 예시 :
flutter config --jdk-dir="C:\Program Files\Java\jdk-18.0.2.1"
- 예시 :
flutter doctor -v
→ 경로 변경이 적용되었는지 확인
참고 : Flutter의 jdk 선택 우선순위
flutter config --jdk-dir
로 명시적으로 설정된 jdk- Android Studio가 번들로 제공하는 jdk
JAVA_HOME
환경변수가 가리키는 jdk- 시스템 PATH에서 찾을 수 있는 Java 바이너리
flutter config
1 2 3 4
The Java Development Kit (JDK) installation directory. If unset, flutter will search for one in the following order: 1) the JDK bundled with the latest installation of Android Studio, 2) the JDK found at the directory found in the JAVA_HOME environment variable, and 3) the directory containing the java binary found in the user's path.
This post is licensed under CC BY 4.0 by the author.