2013-06-27 1 views
1

를 사용하여 SSL 연결하는 웹 서버로 라우팅 HTTP로 요청을 :부두 HttpClient를 내가 부두의 HttpClient를 아파치 웹 서버에 SSL을 사용하여 연결의 설정을 가지고 프록시

HttpClient를 < --HTTPS -> HTTP 서버 < - HTTP -> 웹 서버.

이 설정은 오래 동안 사용되었습니다. > 프록시 < --HTTPS - -> HTTP 서버 < --http -> 웹 서버

나 '
HttpClient를 < --HTTPS CONNECT 방법을 사용하여이 :
는 지금은 프록시를 추가하려고 해요 다음 코드를 사용하여 프록시를 설정하십시오.

httpClient.setProxy (새 주소 ("proxyHost", proxyPort));

프록시에는 인증이 필요하지 않습니다.

SSL 핸드 셰이크가 시작되어 TCP 덤프를 보면 '서버 안녕'응답이 표시됨을 알 수 있습니다. 그러나, 핸드 셰이크 나중에 http 서버 로그에 다음과 같은 오류를 보여주는 실패 :

[2013 수요일 6월 26일 12시 49분 42초] [디버그] ssl_engine_io.c (1925) : OpenSSL을 : I/O 오류, BIO # 7faefe130d00 [mem : 7faefe11f203]에서 읽을 것으로 예상되는 5 바이트

핸드 셰이크가 실패하기 때문에 HTTP 요청이 웹 서버에 전달되지 않습니다.

동일한 설정을 사용하지만 Jetty HttpClient를 url.openConnection() 및 HttpsURLConnection 구성 (대체적으로 https://stackoverflow.com/a/1512268/378060)으로 바꾸는 것이 좋습니다.

프록시 및 인증서를 구성한 후 브라우저에서 연결하면 작동합니다.

버전 정보 :
부두 HttpClient를이 : 7.4.2, 7.6.11은 8.1.11은 (윈도우)
프록시 2.7 (윈도우)
아파치 웹 서버 2.2.15 (리눅스)

답변

0
오징어 시도

문제는 여기에 설명 된 것과 동일합니다 : http://dev.eclipse.org/mhonarc/lists/jetty-users/msg01854.html.
Squid 2.7은 Http 1.1과 호환되지 않지만 Http 1.0이므로 Jetty의 Proxy-Connection : keep-alive 헤더에 keep-alive 헤더로 응답하지 않았습니다. Jetty는 Http 1.0 규칙에 따라 연결을 닫아야했습니다.

관련 문제