1

新しい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
    }
});

JAMESメールサーバー2.3.2を使用しています(それが何かを意味する場合)。

前もって感謝します!

4

1 に答える 1

2

接続の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());
于 2011-10-19T14:58:10.683 に答える