脆弱な暗号スイートを使用した接続を許可する Web サイトをチェックするために、Java の脆弱性スキャナーに取り組んでいます。したがって、たとえば、56ビットの「SSL_DHE_RSA_WITH_DES_CBC_SHA」(または他の弱い暗号)を使用して接続を試み、200 OKと言うと、Webサイトは脆弱です. これが私がこれまでのところです:
1- HttpURLConnection はデフォルトの暗号で常に正常に動作しますが、「System.setProperty()」を使用して弱い暗号を設定しようとすると、「cipher not supported exception (ほとんどの暗号スイートで)」または「接続が拒否されました」というメッセージが表示されます。 connect() しようとすると例外が発生します。接続が拒否されたことは、弱い暗号を受け入れない Web サイトに対する私の答えであることは知っていますが、例外の代わりに実際の http 応答ヘッダー (拒否コード付き) を取得するにはどうすればよいですか?
2- 実際には、SSL レベル (レイヤー 6) ではなく HTTP レベル (レイヤー 7) で脆弱性を見つけることに興味があり、http ヘッダーが場合によっては欺瞞的である可能性があることは知っていますが、それで問題ありません。
要約すると、弱い暗号スイートでのみ機能するには、次のようなものが必要です。
URL url = new URL(ip);
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
con.setHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
con.connect();
System.out.println("Response Code : " + con.getResponseCode());