2014-06-05 2 views
0

웹 사이트 (https://www.otten-markenshop.de/)에 SSL 연결을 만들고 브라우저 또는 컬을 사용하지만 작동하지 않지만 wget과 Java가 연결되지 않습니다. Java 코드가 실패하는 이유는 무엇입니까?java.security.cert.CertificateException 인증서가 여러 개인 서버에 연결할 때

사용 WGET :에

public static void main(String[] args) throws IOException 
{ 
    URL url = new URL("https://www.otten-markenshop.de"); 
    URLConnection connection = url.openConnection(); 
    connection.getInputStream(); 
} 

결과 : 자바를 사용

Resolving www.otten-markenshop.de... 217.24.213.167 
Connecting to www.otten-markenshop.de|217.24.213.167|:443... connected. 
ERROR: certificate common name “www.plentymarkets.eu” doesn’t match requested 
host name “www.otten-markenshop.de”. 

에서

wget https://www.otten-markenshop.de/ 

결과 다음은 오류 세부 정보입니다

내가 발견 한 그 밖의 무엇
Exception in thread "main" javax.net.ssl.SSLHandshakeException: 
java.security.cert.CertificateException: No subject alternative DNS 
name matching www.otten-markenshop.de found. 

내가 브라우저에서받을 인증서가 내가받은 인증서와 다른 점이다 났을 때 자바 프로그램 : 브라우저에서

: 자바에서

Common Name (CN): 
    www.otten-markenshop.de 
Subject Alternative Name: 
    DNS Name=www.otten-markenshop.de 
    DNS Name=otten-markenshop.de 

:

Common Name (CN): 
    www.plentymarkets.eu 
Subject Alternative Name: 

그리고 certificat IP 주소로 호스트에 액세스하려고하면 브라우저에서 Java와 동일한 결과를 얻습니다 : https://217.24.213.167 따라서 서버에 여러 인증서가 설치되어 있으며 가상 호스트를 사용하여 어떤 인증서를 사용해야하는지 감지합니다. 그러나 클라이언트가 Java 또는 wget 일 때 어떤 이유로이 탐지가 작동하지 않습니다.

왜 이런 생각입니까?

P. 어떻게 구성되어 있는지 보려면 대상 서버에 액세스 할 수 없습니다.

P.P.S. 나는 간단한 자바 코드가 작동하지 않는 이유를 이해하는데 더 관심이있다. 예를 들어, SSL 검증을 사용하지 못하게하는 것이 그 것이다. 결국 아무런 문제없이 HTTP를 통해 언급 된 URL에 연결할 수 있습니다.

답변

1

같은 IP 주소 및 포트에 여러 인증서가있는 것은 서버 이름 표시에 의존합니다.

귀하의 서버에서 지원하지만 귀하의 고객도이를 지원해야합니다.

SNI에 대한 클라이언트 측 지원은 Java 7 (release notes 참조) (*) 참조의 Java에서만 도입되었습니다. Java 6 이하를 사용하고있는 것 같습니다. 그렇지 않으면 URLConnection의 간단한 예제가 이와 같이 작동합니다.

(당신은 버전에 따라, 아파치 HTTP 클라이언트와 같은 다른 클라이언트 라이브러리를 사용하는 경우 당신은 또한. 추가 설정을해야 할 수도 있습니다)

(*) 그리고 이것은 Java 8에 서버 측에 소개되었다 , 그러나 그것은 당신의 문제가 아닙니다.

+0

정말로 감사합니다. Java 6로 샘플을 실행했습니다. 프로덕션 환경에서는 Java 7을 사용하지만 다른 SSL 문제로 인해 비활성화 된 SNI 지원이 있습니다 (예외적 인 조건 인 'unrecognized_name' 경고를 무시하기 위해). 자바 7에서). 이제 SNI를 전환하는 대가를 봅니다. – Ivan

관련 문제