HTTP 클라이언트가 일반 HTTP 요청을 프록시에 안전하게 보낼 수 있도록 HTTPS 프록시를 설정했습니다. 예를 들어, 클라이언트는 암호화 된 HTTP GET 요청을 프록시에 보내면 암호화가 제거되고 최종 HTTP GET 요청이 최종 사이트로 전송됩니다.HttpRouteP lanner - HTTPS 프록시와 함께 작동하는 방법
이 설정은 일반적인 설정이 아니며 Google 크롬에서만 이러한 시나리오를 지원하는 내장 기능이 있다는 것을 알았습니다. (여기에 정보 - http://wiki.squid-cache.org/Features/HTTPS#Encrypted_browser-Squid_connection). Google 크롬을 내 HTTPS 프록시와 함께 사용할 수있게 만들었으므로 프록시 측에 문제가 없습니다.
내 HTTPS 프록시에 대한 모든 요청을 암호화하는 HTTP 클라이언트를 작성하고 싶습니다. 나는이 방법을 DefaultHttpClient하기 위해 HTTPS 프록시 설정을 시도 -
DefaultHttpClient dhc = new DefaultHttpClient();
HttpHost proxy = new HttpHost("192.168.2.3", 8181, "https"); //NOTE : https
dhc.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
그런 다음 모든 요청을 실행하려고하는 것은 나에게 SSLPeerUnverifiedException을 제공합니다. 나는 그 이유를 이해하지 못합니다.
DefaultHttpClient API를 탐색하는 동안 프록시에 대한 연결을 암호화해야하는지 여부를 지정할 수있는 HttpRoutePlanner와 HttpRoute를 보았습니다. 그러나, 나는이 일을 할 수 없다.
HTTP Client <------- Plain Text GET, POST Requests -------> HTTP Proxy <------- Plain Text GET, POST Requests -------> HTTP End-Site
HTTP Client <------- Plain Text CONNECT Requests -------> HTTP Proxy <------- Plain Text CONNECT Requests -------> HTTPS End-Site
참고 : HTTPS 최종 사이트의 경우 만 CONNECT 요청이
HTTP 프록시 - 여기
는 HTTP 프록시 설정으로 차별화하여 내 설정을 설명하는 도면이다 프록시가 본.HTTP Client <------- Encrypted GET, POST Requests -------> HTTPS Proxy <-------- Plain Text GET, POST Requests --------> HTTP End-Site
HTTP Client <------- Encrypted CONNECT Requests -------> HTTPS Proxy <------- Plain Text CONNECT Requests -------> HTTPS End-Site
참고 : HTTPS 최종 사이트의 경우, 초기 CONNECT 요청이 프록시에 암호화되어야 그런 다음 SSL 터널은 클라이언트 및 최종 사이트
HTTPS 프록시 사이에 설정됩니다. 이후의 요청은 어쨌든 터널링됩니다.
누구든지이 목표를 달성 할 수있는 방법을 알려주십시오. HttpRoutePlanner가 도움이된다고 생각하지만, 어떻게해야할지 모르겠다. 감사.
안녕하세요 올렉. 작동하도록 만들었습니다. 내 대답을 참조하십시오. – MediumOne
@mediumone 나를 믿어도 효과가 없습니다. https://issues.apache.org/jira/browse/HTTPCLIENT-1318 – oleg
나를 위해 작동합니다. 포스터가 HTTP 최종 사이트가있을 때 직면했던 것과 동일한 오류가 발생했습니다. 오류는 다음과 같습니다 : ""route : plans = {} -> https : // localhost : 7777-> http : //www.exceptional.io; current = {s} -> https : // localhost : 7777->; http : //www.exceptional.io "'안전하게"True "로 자신의 RoutePlanner를 설정하여 보안 연결을 강제 할 수있었습니다. 이제 계획된 경로는'{s} -> https : // localhost : 7777-> http : //www.exceptional.io "'가되고 오류가 없습니다. – MediumOne