아파치 http 클라이언트를 기반으로하는 http 클라이언트가 있으며 SSL 인증서에 문제가없는 것으로 보입니다. 나는 세계적으로 인정받는 인증서와 자체 서명 된 인증서에 대한 단위 테스트를 커스텀 SSLSocketFactory와 함께 가지고있다.아파치 HTTP 클라이언트가있는 프록시를 통한 HTTP
그러나 프록시에서 동일한 코드를 실행하면 작동이 멈췄습니다. 계속이 두려운 예외가 계속 발생합니다.
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:352)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:572)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
나는 코드를 최소한으로 줄였으며 여전히 동일한 예외를 throw합니다. 코드 : 그것은 기본 SSL 설정을 사용하는 경우 아무 것도 지정되지 않은 경우
URI uri = new URI("https://www.google.com");
DefaultHttpClient client = new DefaultHttpClient();
client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,
new HttpHost("proxy.int", 8080, "https"));
HttpUriRequest request = new HttpGet(uri);
HttpResponse response = client.execute(request);
나는 내가 명시 적으로뿐만 아니라 그것을 추가 확신하지 못했습니다 :
URI uri = new URI("https://www.google.com");
DefaultHttpClient client = new DefaultHttpClient();
client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,
new HttpHost("proxy.int", 8080, "https"));
client.getConnectionManager().getSchemeRegistry().register(
new Scheme("https", 443, SSLSocketFactory.getSystemSocketFactory()));
HttpUriRequest request = new HttpGet(uri);
HttpResponse response = client.execute(request);
가 나는 또한 시도 getSocketFactory() (안 그 차이가 getSystemSocketFactory()와는 완전히 다른지, 여전히 같은 오류입니다.
편집 :
프록시는 옵션 인증을 가지고 있는데로와하지 않고 모두 노력했다. 인증 정보는 다음 코드를 사용하여 설정되었습니다.
client.getCredentialsProvider().setCredentials(
new AuthScope("proxy.int", 8080),
new UsernamePasswordCredentials("user", "password")
);
정확히 같은 오류입니다.
client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,
new HttpHost("proxy.int", 8080, "http"));
프록시 서버에 인증이 필요합니까 : – Santosh
선택 인증이며 함께 사용해 보았습니다 (자세한 내용은 질문에 추가되었습니다). – nablex