Клиент CXF: невозможно найти действительный путь сертификации для запрошенной цели

Я пытаюсь реализовать клиент для веб-службы на основе CXF, которую я также написал.

Мой веб-сервис работает отлично (проверено, работает нормально с помощью soapUI), но запустить клиента не удается со следующим:

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:323)

Сообщение ясно указывает на проблему с сертификатом, поэтому я сделал быстрый поиск и нашел правильный подход кподдержка SSL в CXF и добавил следующее в XML-конфигурацию контекста моего приложения Spring:

  <http:conduit name="https://myserver/myws/register/soap?wsdl:{http://glob.reg.com/myws}.http-conduit">

    <http:tlsClientParameters>
      <sec:keyManagers keyPassword="password">
        <sec:keyStore type="JKS" password="password"
                      file="my/file/dir/Morpit.jks"/>
      </sec:keyManagers>
      <sec:trustManagers>
        <sec:keyStore type="JKS" password="password"
                      file="my/file/dir/Truststore.jks"/>
      </sec:trustManagers>
      <sec:cipherSuitesFilter>
        <!-- these filters ensure that a ciphersuite with
             export-suitable or null encryption is used,
             but exclude anonymous Diffie-Hellman key change as
             this is vulnerable to man-in-the-middle attacks -->
        <sec:include>.*_EXPORT_.*</sec:include>
        <sec:include>.*_EXPORT1024_.*</sec:include>
        <sec:include>.*_WITH_DES_.*</sec:include>
        <sec:include>.*_WITH_AES_.*</sec:include>
        <sec:include>.*_WITH_NULL_.*</sec:include>
        <sec:exclude>.*_DH_anon_.*</sec:exclude>
      </sec:cipherSuitesFilter>
    </http:tlsClientParameters>
    <http:authorization>
      <sec:UserName>Betty</sec:UserName>
      <sec:Password>password</sec:Password>
    </http:authorization>
    <http:client AutoRedirect="true" Connection="Keep-Alive"/>

  </http:conduit>

И перестроил клиента. Клиент успешно собран, но я все еще получаю ту же самую точную ошибку и ту же самую точную трассировку стека, как будто я никогда не добавлял этоhttp:conduit вещь.

Я еще не добавил сертификат в хранилище, и путь к хранилищу неверен, но это намеренно, поскольку я просто хотел посмотреть, как пересозданный клиент сообщает об этой проблеме, приспосабливаясь к новомуhttp:conduit Информация.

Вместо этого я был удивлен, увидев, что это было полностью проигнорировано.

Что я пропустил?

Как правильно подойти к этому?

Обновить: Я только что заметил, что мой applicationcontext.xml подчеркиваетhttp:conduit с этим сообщением об ошибке:

The prefix "http" for element "http:conduit" is not bound.

Поэтому я сделал быстрый поиск и нашелнить это предполагает:

Клиент должен настроить канал HTTP с хранилищем ключей, которое содержит сертификат STS, например:

 <http:conduit name="https://localhost:.*">
      <http:tlsClientParameters disableCNCheck="true">
        <sec:trustManagers>
          <sec:keyStore type="jks" password="cspass" resource="clientstore.jks"/>
        </sec:trustManagers>
      </http:tlsClientParameters>
  </http:conduit>

Что подтверждает то, что написал @GreyBeardedGeek. Собираюсьработать над этим в настоящее время...

Ответы на вопрос(1)

Ваш ответ на вопрос