2010-11-24 4 views
2

이 있습니다 :SSL 클라이언트 - 인증서는 언제 필요합니까?

 SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory(); 
    SSLSocket socket = (SSLSocket) factory.createSocket("www.verisign.com", 443); 

두 번째 줄에 "연결이 거부되었습니다"오류로 실패합니다.

위와 같은 작업을 수행하기 전에 신뢰 저장소에 verisign의 인증서를 설치해야합니까? SSL 서버에 연결하여 getPeerCertificates()를 실행하여 인증서를 얻을 수 있다는 인상하에있었습니다. 이것이 우리 브라우저가하는 것이 아닌가? 그렇지 않으면 어떤 서명 기관을 사용할 지 어떻게 알 수 있습니까?

(분명히 예를 들어 Verisign을 사용하고 있습니다. 내 실제 URL은 여기에 사용하기에는 너무 저속합니다 ...)

+0

나는 방화벽이나 무언가에 의해 화상을 입을 지 궁금합니다. 나는 할 수 없다 : URL url = 새로운 URL ("www.google.com"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.getInputStream() –

답변

1

연결이 거부되었다는 의미는 대상 호스트 : 포트에서 수신 중이거나 방화벽이 방해가되었다는 의미입니다. 이는 논리적으로나 시간적으로 SSL보다 우선합니다.

+0

의심되는 것으로 확인되었습니다. –

1

당신이 원격 서비스가 실행 실제로 있는지 확인하고, 당신이 할 수있는 것을 가지고 그것에 연결 하시겠습니까? 아마도 "Connection refused"오류는 실제로 거부 된 연결입니다. :-)

+0

https://www.verisign.com에서 읽으십시오 ;-) –

+0

@Tony Ennis : 그는 실제로 연결되어있는 사이트가 아니라 그가하지 않았다고 말했습니다. URL을 공개하고 싶습니다. 질문의 마지막 문장 :) –

+0

네,하지만 저는 정말로 verisign 웹 사이트를 사용해 보았습니다. 그것도 연결에 실패합니다. (Q : Verisign은 자체 서명 된 인증서를 사용합니까? lolz) –

1

일반적으로 컴퓨터에 서버 인증서를 명시 적으로 설치할 필요가 없습니다. PKI는 시스템이 사전 지식없이 서버 인증서를 검증 할 수 있어야합니다. 그러나 이것은 서버의 인증서가 루트 또는 기타 인증서가 이미 클라이언트 시스템에 나열되어있는 "알려진 CA"(즉, 인증 기관)에 뿌리를두고있는 경우에만 작동합니다. 그렇지 않은 경우 (예 : 서버에 자체 서명 또는 기타 사용자 정의 인증서가있는 경우), 언급 된 클래스가 서버 인증서의 유효성을 올바르게 검증하기 전에 실제로 클라이언트 시스템에 인증서를 설치해야합니다.

about certificates and how they are used in SSL here을 읽을 수 있습니다.

+0

_... 서버의 인증서가 "알려진 CA"에 뿌리를두고 있습니다. 루트 또는 기타 인증서가 클라이언트 시스템에 이미 나열되어 있습니다 ... _ 연결하려는 URL에 Verisign이 서명 한 인증서가 있고 Verisign이 제 키 스토어에 있으면 모든 것이 배후에서 작동합니까? –

+0

javax.net.ssl.trustStore 및 javax.net을 설정했습니다. .ssl.keyStorePassword 환경 변수 –

+0

@ 토니 불행히도 Java SSL 클래스가 인증서를 확인하는 방법, 즉 Java Runtime이 신뢰할 수있는 인증서 목록을 유지하는지 여부를 알지 못합니다 .Net 일 경우 응답은 예 –

관련 문제