2016-05-10 3 views
0

私のコードは、アプリケーションと同じサーバー上のテンプレートファイルにアクセスしようとしています。 SSLを有効にするまではうまくいきました。handshake_failure同じサーバー上のファイルにアクセスしようとしています

ファイルに接続すると、SSLHandshakeException:handshake_failureが発生します。実際の問題の原因に関する情報はあまりありません。 ブラウザからファイルにアクセスしようとすると、自分の責任で進めたいかどうかを尋ねる警告ページが表示されます。

証明書に問題がありますか?私はそれをバイパスできますか?

編集:サーバーはJava 1.7のJBoss EAP 6.1です。 TLS1.2を使用するように設定されています。 テンプレートを取得するビットは次のとおりです。

URL url; 
URLConnection urlConnection; 
try { 
    url = new URL(templateUrl); 
    urlConnection = url.openConnection(); 

    urlConnection.setConnectTimeout(connectionTimeout); 
    urlConnection.setReadTimeout(connectionTimeout); 
    BufferedReader breader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); 

    String line; 
    while ((line = breader.readLine()) != null) { 
    strHtmlContent.append(line); 
    } 

} 

答えて

0

ハンドシェイクエラーは、少なくともではない証明書の検証で、通常は証明書には問題ではありません。これにはいくつかの理由があります。通常、プロトコルのバージョンが間違っていたり、暗号が重複したり、SNIが使用されていません。

残念ながら、問題は特定のケースでは言えませんが、異なるクライアント(ブラウザ、カールなど)でサイトにアクセスしようとすると、それを絞り込む可能性があります。ブラウザでさえもサイトにアクセスできない場合は、おそらくサーバーの設定ミスです。

+0

ブラウザで特定のURLにアクセスすることができたと私が言ったように、証明書が有効ではないという警告ページが表示され、自分の責任で進めることができます。一度だけ警告が出ます。私が「リスクを受け入れる」後、それ以降はすべてファイルを取得するだけです。奇妙に思えるのは、ファイルにアクセスしようとしているアプリケーションとファイル自体が同じサーバー上にあることです。 – algiogia

+0

@algiogia:これは同じシステムであるかどうかは関係ありません。ハンドシェークエラーを解決した後でも、あなたの(未知の)アプリケーションで証明書検証エラーが発生するでしょう。アプリケーションに詳細を提供する場合、特にアプリケーションがTLS、TLSスタック、バージョンなどをどのように使用するかについては、ハンドシェイクの失敗の原因を見つけるのに役立ちます。 –

関連する問題