Apache Commons Http クライアント - クライアント固有のプロトコルの登録
-
26-09-2019 - |
質問
私は他のアプリケーションに統合することを目的としたライブラリに取り組んでいます。httpsサーバーと通信する必要があり、Apache Commons HttpClient 3.1を使用しています。独自のキーストアを持っているので、キーストアを登録する必要があります プロトコル 経由: Protocol.registerProtocol
. 。これを静的ではなくクライアントの特定のインスタンスに登録する方法があるかどうか疑問に思っていました。この方法なら、他のインスタンスを台無しにすることはなく、誰も私を台無しにすることはありません。
クライアントのHostConfigurationを取得して呼び出すことができるものを見ました セットホスト, 、プロトコルを使用していますが、正しく動作していないようです。次のように登録しています。
HostConfiguration config = client.getHostConfiguration();
config.setHost(remoteUrl.getHost(), remoteUrl.getPort(), new Protocol("https", new MyProtocolSocketFactory(), 443));
ただし、接続を確立しようとすると、SSL ハンドシェイクは失敗しますが、同じパラメータで Protocol.registerProtocol を使用すると機能します。失敗は標準です:
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
解決
HttpComponents 4 にアップグレードし、クライアント 3.x はそのままにしておきます。
所属していません StackOverflow