2011-10-19 1 views
1

새 SSL 연결이 시작되고 핸드 셰이크가 시작될 때 알림을 받고 싶습니다. 키 저장소가 호출되기 전에 인증서를 가져와야합니다.청취자와 SSL 핸드 쉐이크를 연결하는 방법은 무엇입니까?

청취자를이 프로세스에 등록 할 수있는 방법이 없으므로 인증서가 정상인지 여부를 결정할 수 있으며 키 스토어와 비교하여 확인하거나 취소해야합니다.

이런 식으로 뭔가하지만 SMTP 연결을위한 :

URL req = new URL(getUrl); 

HttpsURLConnection con = (HttpsURLConnection) req.openConnection(); 

con.setHostnameVerifier(new HostnameVerifier() 
{ 

    public boolean verify(String hostname, SSLSession session) 
    { 
     return true; //My decision 
    } 
}); 

나는 제임스 이메일 서버 2.3.2 (즉 뭔가를 의미하는 경우) 사용하고 있습니다.

미리 감사드립니다.

답변

1

연결의 SSLFactory를 설정해야합니다. 다음 예제에서는 키 관리자 및 기본 TrustManager를 사용하지 않습니다. 확인은 checkServerTrusted 메소드에서 수행됩니다.

HttpsURLConnection con = (HttpsURLConnection) req.openConnection(); 
SSLContext context = SSLContext.getInstance("TLS"); 
context.init(null, // No Key Manager 
      new TrustManager[] { new X509TrustManager() 
       { 
       @Override 
       public void checkClientTrusted(X509Certificate[] arg0, String arg1) 
        throws CertificateException 
        {} 

       @Override 
       public void checkServerTrusted(X509Certificate[] arg0, String arg1) 
        throws CertificateException { 
         // check the certs 
       } 

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

       } }, // TrustManager 
      new java.security.SecureRandom()); 
con.setSSLSocketFactory(context.getSocketFactory()); 
+0

고마워요! 그게 내가 찾고 있던거야! :) – bigbasti