1

HTTPSとSSLの概念に精通していましたが、最近いくつかの開発を開始し、少し混乱していることに気付きました。

要件は、スキャナーに接続されたマシンで実行される小さなJavaアプリケーションを作成することでした。ドキュメントがスキャンされると、これが取得され、ファイル(通常はPDF)がインターネット経由でアプリケーションサーバーに送信され、アプリケーションサーバーがそれを処理します。ApacheCommonsライブラリとHTTPClientを使用してアプリケーションを作成しました。

2番目の要件は、SSLを介して接続することであり、証明書が必要です。HTTPclientページのガイダンスに従って、投稿ページのAuthSSLProtocolSocketFactoryを使用しています。

コンストラクターは、キーストア、キーストアパスワード、トラストストア、およびトラストストアパスワードを取得できます。最初のテストとして、開発Webサーバーの1つでDBAがSSLを有効にし、IEにインポートしたときに正常に接続できる.p12ファイルを提供してくれました。

キーストアとトラストストアの間で少し混乱しており、keytoolを使用してどのような手順を実行する必要がありますか。p12をキーストアファイルにインポートしようとしましたが、エラーが発生します:

keytool error: java.lang.Exception: Input not an X.509 certificate

p12をInternetExplorerにインポートし、.cerとしてエクスポートして、キーストアに正常にインポートできるようにするという提案に従いました。これをAuthSSLProtocolSocketFactoryのキーストア引数として指定すると、意味のないエラーが発生しますが、トラストストアとして試してみると、正常に読み取られるように見えますが、最終的には次のようになります。

Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate

いくつかの手順を逃したのか、SSLと相互認証を完全に誤解しているのか、サーバー側の構成が間違っているのかがわかりません。

誰かが提案を提供したり、これを理解するのに役立つ可能性のあるリソースを教えてもらえますか?

4

2 に答える 2

3

キーストアには、秘密鍵と関連する証明書が保持されます。トラストストアには、信頼できる証明書が保持されているため、証明書パスの構築と検証に使用できます。

役立つリンクを次に示します。

java.lang.Exception: 入力が X.509 証明書ではありません

秘密鍵と証明書を Java Key Store にインポートする

キーストアとトラストストアの構成

于 2010-05-05T15:55:24.727 に答える
1

これらの前後に証明書ファイルに何も含まれていないことを確認してください。

-----証明書の開始-----

-----証明書の終了-----

于 2012-04-18T17:52:37.750 に答える