본문 바로가기
Flutter

[Flutter] Android 빌드 에러 PKIX path build failed 해결방법(사내망,프록시)

by 아마도개발자 2025. 5. 2.

 

내 인생 최악의 에러 PKIX path build failed를 해결하는 방법에 대해 써보려 한다. 이 놈의 에러는 분명히 어찌저찌 해결을 했는데도 잊을만하면 다시 재발을 해서 정말 큰 고통을 받았다. 이제 이 에러가 발생할 경우 확인해야할 것들, 고쳐야 되는 부분들에 대해 파악이 끝났다고 생각되어 해결방법을 정리해본다.

 

 

에러 배경

이 에러는 기본적으로 사내망, 폐쇄망 환경 즉 프록시를 사용할 때 자주 발생하는 에러다.

Gradle이 services.gradle.org 혹은 maven에서 필요한 파일들을 다운로드 받을 때, 다운로드에 실패하며 에러가 발생한다.

 

 

에러 발생 시

 

이번에는 flutter에서 빌드 빌드명령을 입력했을 때, 위와 같이 gradle-wrapper.properties에 명시된 gradle을 services.gradle.org에서 다운로드 받는 과정에서 에러가 발생했다.

 

우선 에러를 해결하기전에 몇 가지 체크해야 할 포인트가 있다.

 

1. gradle-wrapper.properties (/android/gradle/wrapper)

-이 파일의 distributionUrl에 명시된 버전으로 gradle을 설치하게 된다.

 

2. build.gradle(/android/gradle)

-마찬가지로 dependencies에 동일한 버전을 입력.

-repositories에는 google(), mavenCentral()을 필수 입력, 나머지 잡다한 부분이 있다면 제거해준다.(필요로 인해 추가한 경우 제외)

 

3.  gradle.properties(/android)

-프록시를 거쳐서 외부저장소의 파일들을 가져와야 하기 때문에 내(회사)가 사용중인 프록시의 주소를 입력해준다.

 

4. java와 gradle 위치 확인

- java의 경우 안드로이드 스튜디오가 사용하고 있는 java위치(보통 JAVA_HOME)를 정확하게 파악하고 있어야 한다.

(다른 위치의 cacerts에 인증서를 추가하여 에러가 지속되는 경우가 굉장히 많이 발생한다.)

 

 

- gradle 위치도 확인해 준다.

 

위 주의사항들을 다 체크했다면, 이제 인증서를 추가하는 작업을 해줘야 한다.

만약 보안/시스템 담당자로부터 받은 인증서가 있다면 그 인증서를 바로 사용하면 되고, 인증서가 없을 경우 아래 과정을 따라 인증서를 발급받으면 된다.

 

인증서는 

1. 발급받으려는 사이트 접속 

2. 브라우저 주소창 왼쪽 view site information 클릭(아이콘임)

3. 아래 이미지 상태에서 Export클릭 

*(최상단 인증서를 Export해야함)

 

이제 인증서를 java의 cacerts에 추가해 주면 되는데, 인증서 추가는 keytool로 할 수 있다.

keytool 경로: %JAVA_HOME%/jre or jbr/bin

cacerts 경로: %JAVA_HOME%/jre or jbr/lib/security

 

# 관리자 권한으로 실행된 명령 프롬프트 또는 PowerShell에서 실행
# [JDK 설치 경로]\bin 으로 이동한 후 실행하거나 keytool 앞에 전체 경로를 붙여도 됨.
keytool -import -alias [원하는별칭] -keystore "[cacerts경로]" -file "[인증서파일경로]" -storepass changeit -noprompt

 

인증서를 정상적으로 추가하고 나면 성공적으로 빌드를 할 수 있다.

 

 

그래도 에러가 발생한다면

인증서의 만료기간 이나 RSA키가 1024인 경우가 있다. 나의 경우에는 후자였는데, 인증서를 추가할 때 계속 아래와 같은warning이 올라왔다.

 

Warning:
인증서 uses a 1024비트 RSA 키 which is considered a security risk. This key size will be disabled in a future update.

 

warning이라 무시를 했었는데... 결국 이 인증서가 문제가 되어 최신 인증서를 다시받아 문제를 해결했다.

 

 

 

마무리

수 많은 사람들의 시간을 뺏어간 악마같은 에러라고 생각된다. 특히 나처럼 native지식없이 플러터로 모바일 개발을 처음 시작한 경우 아무래도 gradle, java 빌드와 관련된 지식이 부족할 수 밖에 없기 때문에 더 혼란스러운 것 같다.