Я пытаюсь получить доступ к сервису через HTTPS, но из-за ограниченных сетевых настроек я пытаюсь сделать запрос через туннель ssh.
Я создаю туннель с помощью команды, подобной:
ssh -L 9443: my-service.com: 443 sdt-jump-server
Служба доступна только через HTTPS, она размещена с самозаверяющим сертификатом и являетсяза балансировщиком нагрузки, который использует либо имя хоста, либо явный заголовок хоста для маршрутизации входящих запросов в соответствующую серверную службу.
Я могу вызывать конечную точку из моей локальной системы, используя curl, например
curl -k -H 'Host: my-service.com' https://localhost:9443/path
Однако, когда я пытаюсь использовать реализацию JAX-RS в CXF 3.1.4, чтобыта же самая просьба, я не могу заставить ее работать.Я настроил hostnameVerifier, чтобы разрешить соединение, загрузил сертификат сервера и добавил его в мое хранилище доверенных сертификатов.Теперь я могу подключиться, но похоже, что балансировщик нагрузки не соблюдает заголовок хоста, который я пытаюсь установить.
Я немного растерялся, пока не установил -Djavax.net.debug
и не увидел, что хостпереданный заголовок был на самом деле localhost
, а не значение, которое я установил.Как заставить CXF соблюдать заданный мной заголовок Host вместо значения из URL-адреса WebTarget?!