java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.NETWORK
안녕을 found.NETWORK하지 인증 경로에 대한 신뢰 앵커, 나는는 java.security.cert.CertPathValidatorException : 내가 개조에서 하나 개의 API 서비스를 호출 오전 동안이 오류가 발생했습니다
처럼 많이 발견 답을 찾고 있어요private static void setupRestClient() {
RestAdapter restAdapter = new RestAdapter.Builder()
.setLogLevel(RestAdapter.LogLevel.FULL)
.setEndpoint(ROOT)
//.setClient(new OkClient(new com.squareup.okhttp.OkHttpClient()))
//.setClient(getOkClient())
.setClient(setSSLFactoryForClient(new com.squareup.okhttp.OkHttpClient()))
.setRequestInterceptor(new SessionRequestInterceptor())
.setLogLevel(RestAdapter.LogLevel.FULL)
.setLog(new AndroidLog(NetworkUtil.APP_TAG))
.build();
REST_CLIENT = restAdapter.create(Restapi.class);
}
// SET SSL
public static OkClient setSSLFactoryForClient(OkHttpClient client) {
try {
// Create a trust manager that does not validate certificate chains
final TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
}
};
// Install the all-trusting trust manager
final SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
// Create an ssl socket factory with our all-trusting manager
final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
client.setSslSocketFactory(sslSocketFactory);
client.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
} catch (Exception e) {
throw new RuntimeException(e);
}
return new OkClient(client);
}
setSSLFactoryForClient 방법을 사용 후에는 잘 작동하지만 난 잘못가는 뭐죠 이해할 수 있으며,이 방법은 무엇 내가 문제가 SSL 인증서 인증 관련이 알고 있지만 어떤 사람은 간단한하시기 바랍니다
감사합니다. 유리! 내가 다른 서버에 URL (모든 메소드 같은 단지 변경 URL)를 변경하면 그것이 나에게 완벽한 응답을주고,이 URL은 응답이 –
"이것은 보안을 사용하지 않도록 설정되어 일부 보안 장벽이 코드 바이 패스를 사용 포기하지 않았다 서버를 의미한다 로컬 테스트에는 적합하지만 실제 사용자에게는 적합하지 않습니다. " 이 문제를 해결하는 올바른 방법보다 무엇을 말했는지 –
다른 서버가 다른 클라이언트가 승인 한 유효한 인증서를 생성하는 경우. 바탕 화면에 곱슬 곱슬합니다. 그런 다음 문제가 발생한 인증서를 런타임에 또는 키 도구를 통해 신뢰 저장소에 추가하는 것이 좋습니다. 예 : https://github.com/square/okhttp/blob/master/samples/guide/src/main/java/okhttp3/recipes/CustomTrust.java 에 적합한 경우 다른 서버는 단지 다음 코드를 테스트 인증서를 사용하는 경우 테스트. –