2013-07-31 11 views
1

Apache HTTPS 클라이언트에 이상한 문제가 있습니다. 기본 인증을 사용하는 외부 HTTPS 웹 사이트에 연결하려고합니다 (SSL 서버 인증 만). 여기 내 테스트와 결론의 요약입니다. > 성공HTTPSURLconnection과 Apache (System) 사이의 인증서 체인이 다릅니다. DefaultHttpClient

  • 사용 javax.net.ssl.HttpsURLConnection - -> 성공

  • 사용 DefaultHttpClient 또는 SystemDefaultHttpClient 중 하나 -> 실패

    • 웹 사이트에 연결하는 크롬/파이어 폭스/IE의 하나를 사용

    "javax.net.debug"를 "ssl"로 설정하여 디버깅을 시도했습니다. 두 클라이언트가 동일한 트러스트 스토어 (기본 JDK 트러스트 스토어)를 선택하고 동일한 프로토콜 (TLSv1)을 사용하는 것으로 나타났습니다. 위의 확장이없는 동안 [websitehostname HOST_NAME :]

    그러나 차이는

    나는 다음과 같은 확장이 JDK

    확장 서버 _에 의해, 서버 _ 이름을 반환 된 것으로 나타났습니다 여기에 있었다 Apache 웹 클라이언트 디버그 로그에 있습니다.

    또한, I는 반드시 하나 개 이상의 차이가 기본 JDK로부터 응답 아래있는 Certficate 체인

    이었다

    * 인증서 체인 체인 [0] = [ [ 버전 : V3 제목 : ** CN = websitename, 도메인 컨트롤 유효성 검사 - RapidSSL (R), OU = www.rapidssl.com/resources/cps 13, OU = GT17702541, SERIALNUMBER = Q2La1fpFlFdNy4kUCIehYMvw6bq64Ch 서명 알고리즘 : SHA1withRSA,OID = 1.2.840.113549.1.1.5

    아파치 클라이언트에

    체인 [0] = [[버전 다음 상태 : V3 제목 : EMAILADDRESS = 루트 @의 i4319, CN = i4319을, OU = SomeOrganizationalUnit, O = SomeOrganization는, L = SomeCity, ST = SomeState, C = - 서명 알고리즘 : SHA1withRSA와, OID = 1.2.840.113549.1.1.5

    분명 I은 F를 얻을 아파치 https 클라이언트와 함께 ollowing 예외.

    Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated 
    

    돌아가서 JDK 기본 클라이언트를 사용하기 위해 다시 작업하기 전에 무슨 일이 일어나고 있는지 알고 싶습니다. 이 동작에 대한 통찰력은 인정 될 것입니다.

    +1

    가능한 작업에 대해 설명 JIRA의가합니다 (SSLSocketFactory를 궁극적으로 아파치 HTTP 클라이언트를 기본 JDK가 HTTPSURLConnection에 사용하는 것과 같습니다)하지만, 가장 먼저 떠오르는 것은 프록시 설정 일 수 있습니다. "와이어"디버그를 활성화하고 클라이언트 하나가 다른 클라이언트를 통과하는지 확인해야합니다. 프록시는 다음과 같습니다. 유전자에 좋은 SSL 필터링을 수행 할 때 가짜 인증서를 평가합니다. – GPI

    +0

    내 네트워크에서 프록시에 대해 이야기하는 경우, 예를 들어, 브라우저를 구성한 적이 없다고 말해야합니다. – javadeveloper

    답변