2016-12-21 10 views
1

지금까지 일부 데이터를 반환하는 서버 http에 연결했습니다. 이제 해당 서버가 변경되었고 https입니다. 나는이 예외를 받고 있어요 새 URL에 접속을 할 때 이제 :https에 연결하면 다음과 같습니다. SSLHandshakeException 인증 경로에 대한 트러스트 앵커를 찾을 수 없습니다.

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 

아이폰 OS에서이 문제는 존재하지 않는 새로운 HTTPS URL은 아무것도하지 않고 함께 일 같은 예전의 코드와 데이터를 제대로 반환 서버의 http 버전

iOS와 같은 소스 코드에서 변경하지 않고이 문제를 방지 할 수있는 방법이 있습니까? 이것은 내가하고있는 다양한 http connectiosn 중 하나이며 내 앱에서 https로 마이그레이션 중입니다.

URLConnection connection; 
URL url = new URL(configUrl); 
connection = url.openConnection(); 
connection.setConnectTimeout(5000); 
connection.setReadTimeout(5000);     
int responseCode = ((HttpURLConnection)connection).getResponseCode(); 
+0

확인 -> http://stackoverflow.com/a/21426948/4018207 – AndiGeeky

답변

0

서버가 아이폰 OS 인식 및 안드로이드에서 인식하지 못하는 일부 인증 기관을 사용

이 내 코드입니다. 서버 팀에 불평하는 것 이외에 직접 할 수있는 방법은 거의 없습니다.

minSdkVersion이 24 이상인 경우 network security configuration을 사용하여 인증 기관에 대해 Android를 가르 칠 수 있습니다. Java 코드를 변경할 필요는 없지만 일부 리소스를 설정하고 매니페스트에서 해당 리소스를 가리켜 야합니다.

minSdkVersion이 17 ~ 23 인 경우 my backport of network security configuration을 사용할 수 있지만 일부 코드를 변경해야합니다.

minSdkVersion이 17 세 미만인 경우 자체 서명 된 인증서를 사용하는 서버와 비슷하게 처리해야하며 자신의 TrustManager을 게시해야합니다.