2013-11-26 1 views
1

javax.net.ssl.SSLKeyException : [보안 : 090477] 인증서 체인이 intranet.xxx.com - 158.171에서 수신되었습니다. SSL 핸드 셰이크 실패로 인해 160.28이 신뢰되지 않았습니다.javax.net.ssl.SSLKeyException : [보안 : 090477] intranet.xxx.com에서 인증서 체인 수신

weblogic을 사용하여 하나의 인트라넷 웹 사이트에서 html 페이지로 내용을 가져 오려고합니다. 웹 사이트에 연결하는 동안 javax.net.ssl.SSLKeyException이 발생합니다. [보안 : 090477] 예외입니다. 동일한 코드 조각을 사용하여 필수 클래스를 사용하여 필요한 부분을 얻을 수있었습니다. 이것에 대한 조언을 부탁드립니다.

public class Test{ 
    public static void main(String[] args) { 
     String[] lines = null; 

     try { 
      // configure the SSLContext with a TrustManager 
      SSLContext ctx = null; 
      try { 
       ctx = SSLContext.getInstance("TLS"); 
      } catch (NoSuchAlgorithmException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      try { 
       ctx.init(new KeyManager[0], new TrustManager[] {new DefaultTrustManager()}, new SecureRandom()); 
      } catch (KeyManagementException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      SSLContext.setDefault(ctx); 

      String url = "https://www.google.com" 

      Document doc = Jsoup.connect(url).get(); 

      Elements elements = doc.getElementById("table_UniqueReportID").children(); 
      for(Element element : elements) 
      { 
       System.out.println(element.nodeName()); 
       if(element.nodeName().equalsIgnoreCase("tbody")) 
       { 
        Elements rowElements = element.children(); 
        for(Element currentRow : rowElements) 
        { 
         System.out.println(currentRow.text()); 
        } 
       } 
      } 

     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

    private static class DefaultTrustManager implements X509TrustManager { 


     @Override 
     public X509Certificate[] getAcceptedIssuers() { 
      return null; 
     } 

     @Override 
     public void checkClientTrusted(X509Certificate[] arg0, String arg1) 
       throws CertificateException { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void checkServerTrusted(X509Certificate[] arg0, String arg1) 
       throws CertificateException { 
      // TODO Auto-generated method stub 

     } 
    } 
} 

답변

3

인증서를 키 저장소로 가져오고 서명자도 Java cacerts로 가져와야합니다.

그리고 인증서 공통 이름이 당신의 이름과 같은지 확인하십시오. 당신이 SBI 온라인 뱅킹 인증서를 참조 example..if를 들어

그런 다음 일반적인 이름은 우리가 일을 키 스토어로 인증서를 가져해야

CN = www.onlinesbi.com

같은 것입니다입니다.