私は現在、SSLの水域をテストしており、SSLの新しいものです。私の研究の一環として、私はJava空間内でSSLの2つの異なる実装に出くわしました。私はどのようなSSL実装を行っていますか?
まず、私の要求は非常にシンプルですが、httpsを使用してURLにデータを送信するプロセスが必要です。
2つのソリューションのうち、最初のJava実装はコアJavaクラスのみを使用し、もう1つはApache HTTPClientを使用してhttpを実行します。
当初、私のテストの一部として、悪名高い「要求されたターゲットへの有効な証明書パスを見つけることができません」という例外が発生しました。この証明書は(サーバから受信した)証明書がJavaキーストア。 Javaキーストアに証明書を追加すると、アプリケーションはどちらの場合も正常に動作します。 しかし、私のHTTPClientの使用では、私はSSLSocketFactoryの使用に気付きました。私は、次のコードで
HttpClient httpClient = new HttpClient();
PostMethod postMethod = new PostMethod(target);
postMethod.setQueryString("someQueryString");
try {
httpClient.executeMethod(postMethod);
System.out.println("Response code: " + postMethod.getStatusLine());
BufferedReader in = new BufferedReader (new InputStreamReader(postMethod.getResponseBodyAsStream()));
String temp;
while ((temp = in.readLine()) != null){
response += temp + "\n";
}
temp = null;
in.close();
System.out.println("Server response:\n'" + response + "'");
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
postMethod.releaseConnection();
}
をHttpClientをテストしたとき
それがうまく働いたので、私はのSSLSocketFactory実装の使用が何であるかわかりませんか?私は当初、鍵ストアへの証明書の追加を自動化したいときに便利だと考えました。私はその分析を正しくしていますか?
私の分析が正しい場合、どの実装が良いですか?
- 証明書を手動でインストールする方がよいでしょうか?このアプローチの欠点は何ですか?証明書は期限切れになりますか?もしそうであれば、もう一度新しい証明書をインストールする必要がありますか?
- SSLSocketFactoryを使用してキーストアの追加機能全体を自動化する必要がありますか?
あなたのご意見をいただければ幸いです。ありがとうございました。
ええと、私が知る限り、SSLのカスタマイズは必要ありません。私がHTTPClientをそのまま使用しようとしたとき、唯一のエラーは「要求されたターゲットへの有効な証明書パスを見つけることができませんでした」でした。これはサーバー証明書をJava Key Storeの一部にすることで解決しました。だから、この実装は私のための最善の選択肢ですか? – Seagull