2009-07-23 2 views
3

私はの簡易URLを監視したいと思っています。しかし、そのhttpsサーバ私は握手の例外を得るとき。 https urlの状態をブラウザが接続するために使用する方法を検証することは可能ですか? (ローカル証明書を持たない)。私はブラウザがhttpsのURLからコンテンツを取得する方法を知らないが、私はそれを同じようにしたい。各サーバーに特定の証明書を格納する必要はありません。監視されているhttpsは誰でもよいはずです。URLクラス(Java)でHTTPS接続を監視する

try { 
    URL u = new URL(row.getUrl()); 
    String protocol = u.getProtocol(); 
    if(protocol.equals("https")) { 
     HttpsURLConnection hc = (HttpsURLConnection)u.openConnection(); 
     System.out.println("Response Code: " + hc.getResponseCode()); 
     hc.disconnect(); 
    } 
    if(protocol.equals("http")) { 
    u.openConnection(); 
    u.getContent(); 
    } 
    System.out.println("url is up."); 
} catch (Exception e) { 
    (...) 
} 
+0

サーバーの証明書は信頼されていますか?私。 CAによって署名され、期限切れではない?もしそうでなければ、それを正しく働かせるためにいくつかのカジノをしなければならないかもしれません。自己署名証明書を受け入れるには、追加の作業が必要になることがあります。 –

+0

いいえ、可用性をテストしたいホストである必要があります。 –

答えて

3

あなたは本当に、あなたが何かをチェックしませんTrustManagerを持ってSSLContextを設定すると、サーバーの証明書の有効性を気にしない場合。次に、デフォルトのSSLSocketFactoryHttpsURLConnectionに設定して、URLを使用するときにトラストマネージャを使用する必要があります。ここに例があります:

TrustManager[] trustEverything = new TrustManager[] { 
    new X509TrustManager() { 
     public X509Certificate[] getAcceptedIssuers() { return null; } 
     public void checkClientTrusted(X509Certificate[] certs, String authType) { } 
     public void checkServerTrusted(X509Certificate[] certs, String authType) { } 
    } 
}; 

SSLContext sslctx = SSLContext.getInstance("SSL"); 
sslctx.init(null, trustEverything, null); 

HttpsURLConnection.setDefaultSSLSocketFactory(sslctx.getSocketFactory()); 

このテクニックを使用した完全な例は、hereです。

@ericksonが指摘しているように、これはあなたが実際にあなたが懸念しているサーバと話しているかどうかを知ることはできません。より良い解決策は、すべてのチェックを無視するのではなく、あなたが話しているサーバーの自己署名証明書を含めるようにトラストストアを更新することです。

+0

私はいくつかの苦労に遭遇しましたが、あなたのサンプルからこれを見つけました:http://www.java-samples.com/showtutorial.php?tutorialid=211 これは機能しています。ありがとう。 –

+0

良い解決策ですが、ちょうど覚えておいてください:「一部の」サーバーが稼働していることを確認しているだけです。あなたはサーバー認証を失ってしまったので、それがあなたのものか偽装のものかをあなたが確かに知ることはできません。 – erickson

+0

@Ruben Trancosoありがとう、私は正しい方向にあなたを指すことができてうれしい。私は自分の答えにそのリンクを追加します。 –

関連する問題