2011-10-19 5 views
1

新しいSSL接続が開始され、ハンドシェイクが開始されたときに通知を受けたいと思います。 キーストアが呼び出される前に証明書を取得する必要があります。リスナーをSSLハンドシェイクにフックする方法は?

私は証明書がOKで、キーストアと照合やrightawayそれをキャンセルする必要があるかどうかを決定するために得るように、このプロセスにリスナーを登録するいくつかの方法があります。

このような何かが、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 
    } 
}); 

私はJAMESメールサーバ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

関連する問題