2016-11-07 2 views
1

httpclient 4.5.2를 사용하여 프록시 서버를 호출하고 있습니다. 다음은HttpClient 4.5.2 - SSL 인증서 문제

HttpHost proxy = new HttpHost(proxyHost, proxyPort, https); 
HttpHost target = new HttpHost(ip, 443, "https"); 
HttpPost httppost = new HttpPost(url); 
CloseableHttpResponse response = httpclient.execute(target, httppost); 

오류가 난 얻을 수있다 : -

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 
     at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:671) 
     at sun.security.ssl.InputRecord.read(InputRecord.java:504) 
     at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927) 
     at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) 
     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) 
     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) 
     at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394) 
     at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353) 
     at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141) 
     at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) 
     at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:388) 
     at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) 
     at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) 
     at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) 
     at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) 
     at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) 
     at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:117) 

이 오류가 인증서와 관련된 문제입니다 알 수 있습니까? 이미 인증서를 truststore에 추가했기 때문입니다.

+0

아무도 도와 줄 수 있습니까? – user1238353

답변

1
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 

이 오류가 인증서와 관련된 문제입니다 알 수 있습니까? 이미 인증서를 truststore에 추가했기 때문입니다.

이것은 인증서의 문제가 아닙니다. 액세스하는 서버가 적절한 TLS 핸드 셰이크를 수행하지 않습니다.

나는 프록시 서버를 호출하기 위해 http 클라이언트 4.5.2를 사용하고 있습니다.

HTTP 프록시 서버를 통한 HTTPS는 일반 텍스트 HTTP CONNECT 요청으로 시작하여 터널을 설정했습니다. 이 터널이 설정된 후에 만 ​​원래 대상 서버에서 TLS 핸드 셰이크가 수행됩니다.

+0

죄송합니다. 찾을 수 없습니다. 프록시 서버 (https)에 액세스하고 나서 httpclient가 실행되어 타사 URL - 대상 (https)을 전달합니다. – user1238353

+0

TLS로 무엇을 할 수 있습니까? – user1238353

+0

편집 된 게시물에 proxy라는 변수를 사용하는 경우이를 사용하지 않습니다. 나는 그것이 마술처럼 이런 방식으로 적용될 것이라는 것을 대단히 의심한다. TLS (또는 SSL 또는 SSL/TLS)는 HTTPS를 HTTP에서 제외시키는 프로토콜입니다. 즉, HTTPS는 TLS 연결 내에서 HTTP입니다. –