2017-12-27 40 views
0

Java 코드를 사용하여 문서를 Google 클라우드 저장소에 업로드하는 코드 스 니펫을 작성하고 실행했습니다. Google Sql을 프로젝트에 통합하는 동안 keystore 및 truststore 매개 변수를 도입했습니다. 스토어 매개 변수가 도입 된 후 업로드 관련 문서 API가 인증 관련 오류로 인해 실패했습니다. sun.security : 26 십이javax.ssl 매개 변수를 전달하면 Google Cloud Storage 클라이언트 API에서 인증서 확인에 실패합니다.

2017 오후 4시 0분 46초 com.google.api.client.http.HttpRequest는 WARNING 실행하여 요청을 javax.net.ssl.SSLHandshakeException 실행 중에 예외가 발생. validator.ValidatorException : PKIX 경로를 건물 실패 : sun.security.provider.certpath.SunCertPathBuilderException : 없습니다를 에 의해 발생 요청 대상

에 유효한 인증 경로를 찾을 수 : com.google.cloud.storage.StorageException : 오류 을 받고 서비스 계정의 액세스 토큰 :

javax ssl params를 제거하면 코드가 예상대로 작동합니다. Cloud storage API가 클라우드 sql ssl 인증서를 사용하여 저장소에 연결했기 때문입니까? 클라우드 저장소 API에서 인증서 검사를 건너 뛸 수있는 방법이 있습니까? 또는이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변

0

예, 우리는 매우 유사한 복잡한 문제가 있었으며이 문제를 일으키는 MacAfee Web Gateway (MWG) 프록시 구성으로 판명되었습니다. 한 프로세스에서 작동하고 다른 프로세스에서 오류가 발생하는 SSL 인증서 유효성 검사의 이상한 동작을 발견했습니다. 그것은 직선 커맨드 라인 자바 실행에서 일했지만 컨테이너를 통해 동일한 코드를 실행했을 때 오류가 발생했습니다. accounts.google.com 및 * .googleapsi.com에서 모든 인증서를 가져 왔습니다. 우리는 무엇을 해야할지에 대한 단서가 부족했습니다.

MacAfee 웹 게이트웨이 (MWG) 프록시 화이트리스트 구성은 클라이언트 프로세스 (exe 또는 스크립트) 이름을 기반으로합니다. MWG는 기본 구성에서 white로 Java.exe 프로세스의 모든 HTTPS URL을 나열하지만 컨테이너 (odi.exe)와 같은 다른 프로세스 (exe) 이름은 나열하지 않습니다. MacAfee 웹 게이트웨이 프록시의이 설정으로 인해 명령 행 Java 코드가 성공적으로 처리되었고 컨테이너의 동일한 코드에서 오류가 발생했습니다. 또한 HTTPS URL에 대해 프록시에서 발급 한 SSL 인증서가 있으면 SSL 인증서 유효성 검사가 작동하는 것으로 나타났습니다.