2008-09-28 5 views
0

ssl을 사용하여 웹 서비스를 호출하려고합니다. 어떻게하면 관련 서버 인증서를 받아서 내 트러스트 스토어로 가져올 수 있습니까? 기본 메소드에서 com.ibm.ssl.enableSignerExchangePrompt 특성을 사용하지만 수동으로 서버 인증서를 내 truststore에 추가합니다.서버 인증서 및 클라이언트 트러스트 스토어

나는 어떤 도움 데미안

감사 감사 크게되어

내 서블릿의 설정이 속성을 싶지 않는

+0

어떤 프로그래밍 언어를 사용하고 있습니까? BTW, 정말 programmaticaly 인증서를 추가하려면 않는 한 코드 줄을 작성해야 할 필요없이 할 수있는 많은 도구가 있습니다. – Alexander

+0

서버에 대해 (잘 알려진 CA가 서명 한) 적절한 인증서를 얻어서 문제를 해결할 수 있습니다. 특정 인증서를 트러스트 스토어에 추가하는 한 가지 단점은 서버의 인증서가 변경되면 트러스트 스토어를 다시 업데이트 할 때까지 응용 프로그램이 작동하지 않는다는 것입니다. – Alexander

답변

2

사용자는 프로그래밍 방식으로 자신의 X509TrustManager를 구현하여 Java로이를 수행 할 수 있습니다.


public class dummyTrustManager implements X509TrustManager { 

     public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { 
      //do nothing 
     } 

     public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { 
      // do nothing 
     } 

     public X509Certificate[] getAcceptedIssuers() { 
      //just return an empty issuer 
      return new X509Certificate[0]; 
     } 
    } 

은 그럼 당신은


SSLContext context = SSLContext.getInstance("SSL"); 
context.init(null, new TrustManager[] { new dummyTrustManager() }, 
          new java.security.SecureRandom()); 

SSLSocketFactory factory = context.getSocketFactory(); 
InetAddress addr = InetAddress.getByName(host_); 
SSLSocket sock = (SSLSocket)factory.createSocket(addr, port_); 

그런 다음 그 소켓에 그냥 서버 인증서를 추출 할 수 sockect SSL을 만들려면이 트러스트 매니저를 사용할 수 있습니다 (AN 넣어 가져 오기 그것은 신뢰할 수있는 키 스토어에서 )


SSLSession session = sock.getSession(); 
Certificate[] certchain = session.getPeerCertificates(); 
+0

BTW에서는 checkServerTrusted에 이미있는 인증서에 액세스 할 수 있으므로 저장할 수 있습니다. – Alexander

0

당신이 당신의 웹 브라우저에서 사이트로 이동하는 경우가에 의해 보안 정보를 볼 수 있습니다 작은 자물쇠 아이콘을 치고 팝업 대화 상자에서 인증서를 저장할 수 있습니다.

단계는 '정보'탭에서 (주소 표시 줄)

  • 클릭 '인증서 정보'
  • 을 자물쇠를 클릭
    1. 크롬

      당신은 '복사 파일을 선택할 수 있습니다 .. . '