HTTPS 経由でサービスにアクセスしようとしていますが、ネットワーク設定が制限されているため、ssh トンネル経由でリクエストを送信しようとしています。
次のようなコマンドでトンネルを作成します。
ssh -L 9443:my-service.com:443 sdt-jump-server
このサービスは HTTPS 経由でのみ利用でき、自己署名証明書でホストされ、ホスト名または明示的な Host ヘッダーのいずれかを使用して着信要求を適切なバックエンド サービスにルーティングするロード バランサーの背後にあります。
curl のようなものを使用して、ローカル システムからエンドポイントを呼び出すことができます
curl -k -H 'ホスト: my-service.com' https://localhost:9443/path
しかし、JAX-RS の CXF 3.1.4 実装を使用してまったく同じ要求を作成しようとすると、うまくいかないようです。接続を許可するように hostnameVerifier を構成し、サーバーの証明書をダウンロードして、トラストストアに追加しました。接続できるようになりましたが、設定しようとしている Host ヘッダーをロードバランサーが認識していないようでした。
-Djavax.net.debug
設定して、渡された Host ヘッダーが実際には設定した値ではなく、設定した値であることがわかるまで、少し迷いましたlocalhost
。WebTarget の URL の値を使用する代わりに、CXF が設定している Host ヘッダーを尊重するようにする方法は?!