1

Apache HTTPクライアントのルートごとに個別のSSLコンテキストファクトリを設定する方法はありますか。私が見ることができるドキュメントからは、ルートごとではなくスキームごとにSSLContextFactoryを設定することができます。Apache HTTPコンポーネントを使用してルートごとにSSLSocket Factoryを設定する方法

Registry<ConnectionSocketFactory> r = RegistryBuilder.<ConnectionSocketFactory>create() 
      .register("http", plainsf) 
      .register("https", sslsf) 
      .build(); 

    HttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(r); 
    HttpClients.custom() 
      .setConnectionManager(cm) 
      .build(); 

すべての私の目標エンドポイントはHTTPSと義務のクライアント証明書認証で保護されています。これらのエンドポイントごとに、特定のクライアント証明書&をエンドポイントサーバーに提示する必要があります。現在、SSLContextファクトリインスタンスでコンフィグレーションされた各ターゲットエンドポイントルート&に対して個別のHTTPClientインスタンスを作成することしか表示されていません。

ここで私はこのデザインを改善するための指針を探しています。

ありがとうございました。

+0

なぜですか?どのような問題を解決しようとしていますか? – EJP

答えて

2

この質問をApache HTTP Client Forumsに投稿しました。&は、この問題の解決方法を得ました。

一つは、 最後に「http.socket工場-レジストリ」context属性を使用しますが、この機能は文書化されていないとみなされますのでご注意くださいすることができます。

http://hc.apache.org/httpcomponents-client-4.5.x/httpclient/xref/org/apache/http/impl/conn/DefaultHttpClientConnectionOperator.html#66

も1は、SSLソケットを作成するときにカスタムコンテキストの使用属性になり、カスタムConnectionSocketFactory を構築することができますので、予めご了承ください。 これは、この問題を解決するために推奨される方法です。

関連する問題