私のコードは、アプリケーションと同じサーバー上のテンプレートファイルにアクセスしようとしています。 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);
}
}
ブラウザで特定のURLにアクセスすることができたと私が言ったように、証明書が有効ではないという警告ページが表示され、自分の責任で進めることができます。一度だけ警告が出ます。私が「リスクを受け入れる」後、それ以降はすべてファイルを取得するだけです。奇妙に思えるのは、ファイルにアクセスしようとしているアプリケーションとファイル自体が同じサーバー上にあることです。 – algiogia
@algiogia:これは同じシステムであるかどうかは関係ありません。ハンドシェークエラーを解決した後でも、あなたの(未知の)アプリケーションで証明書検証エラーが発生するでしょう。アプリケーションに詳細を提供する場合、特にアプリケーションがTLS、TLSスタック、バージョンなどをどのように使用するかについては、ハンドシェイクの失敗の原因を見つけるのに役立ちます。 –