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と相互認証を完全に誤解しているのか、サーバー側の構成が間違っているのかがわかりません。
誰かが提案を提供したり、これを理解するのに役立つ可能性のあるリソースを教えてもらえますか?