Не ответный веб-сервис. Не найден действующий сертификат

Мы разрабатываем приложение на Java, и, поскольку несколько недель назад у нас возникла проблема, которую мы не смогли решить. Это вызов веб-службы для получения серии данных с сертификатами. Мы выполнили следующие шаги для создания артефактов и последующего вызова

1.При запуске команды wsimport в Windows cmd wsimport -keep https: //xxx/xxx/xxx.svc? SingleWsdl -s C: \ Users \ mvelasco \ Documents \ xx \ xxxx \ src \ main \ java -Xauthfile C: \ Users \ mvelasco \ authwsdl.txt Генерирует серию классов со структурами ws и datacontract. введите описание изображения здесь

  1. Мы импортировали сертификаты

keytool -importcert -keystore "C:\Program Files\java\jdk1.7.0_60\jre\lib\security\cacerts" -file -alias x

  1. Мы создали класс со следующим методом вызова ws

    закрытая статическая пустота llamadaAlServicio() { IDocumentosService port = (new DocumentosService()) .getBasicHttpBindingIDocumentosService(); BindingProvider prov = (BindingProvider) порт; log.error("Имя пользователя: "+ContextProperties.getAsiturWsUsuario()); log.error("Пароль:" + ContextProperties.getAsiturWsPassword ());

    prov.getRequestContext().put(BindingProvider.USERNAME_PROPERTY,
            ContextProperties.getAsiturWsUsuario());
    prov.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY,
            ContextProperties.getAsiturWsPassword());
    
    ArrayOfAttachmentDTO arrAttachmentDTO = port
                .getAllAttachments("1234567");
    

    }

Класс DocumentosService генерируется JAX-WS

@WebServiceClient(name = "DocumentosService", targetNamespace = "http://tempuri.org/", wsdlLocation = "https://xxx/xxx/xxx.svc?singleWsdl") public class DocumentosService extends Service {

private final static URL DOCUMENTOSSERVICE_WSDL_LOCATION;
private final static WebServiceException DOCUMENTOSSERVICE_EXCEPTION;
private final static QName DOCUMENTOSSERVICE_QNAME = new QName("http://tempuri.org/", "DocumentosService");

static {
    URL url = null;
    WebServiceException e = null;
    try {
        url = new URL("https://xxx/xxx/xxx.svc?singleWsdl");
    } catch (MalformedURLException ex) {
        e = new WebServiceException(ex);
    }
    DOCUMENTOSSERVICE_WSDL_LOCATION = url;
    DOCUMENTOSSERVICE_EXCEPTION = e;
}

public DocumentosService() {
    super(__getWsdlLocation(), DOCUMENTOSSERVICE_QNAME);
}

public DocumentosService(WebServiceFeature... features) {
    super(__getWsdlLocation(), DOCUMENTOSSERVICE_QNAME, features);
}

public DocumentosService(URL wsdlLocation) {
    super(wsdlLocation, DOCUMENTOSSERVICE_QNAME);
}

public DocumentosService(URL wsdlLocation, WebServiceFeature... features) {
    super(wsdlLocation, DOCUMENTOSSERVICE_QNAME, features);
}

public DocumentosService(URL wsdlLocation, QName serviceName) {
    super(wsdlLocation, serviceName);
}

public DocumentosService(URL wsdlLocation, QName serviceName, WebServiceFeature... features) {
    super(wsdlLocation, serviceName, features);
}

/**
 * 
 * @return
 *     returns IDocumentosService
 */
@WebEndpoint(name = "BasicHttpBinding_IDocumentosService")
public IDocumentosService getBasicHttpBindingIDocumentosService() {
    return super.getPort(new QName("http://tempuri.org/", "BasicHttpBinding_IDocumentosService"), IDocumentosService.class);
}

/**
 * 
 * @param features
 *     A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy.  Supported features not in the <code>features</code> parameter will have their default values.
 * @return
 *     returns IDocumentosService
 */
@WebEndpoint(name = "BasicHttpBinding_IDocumentosService")
public IDocumentosService getBasicHttpBindingIDocumentosService(WebServiceFeature... features) {
    return super.getPort(new QName("http://tempuri.org/", "BasicHttpBinding_IDocumentosService"), IDocumentosService.class, features);
}

private static URL __getWsdlLocation() {
    if (DOCUMENTOSSERVICE_EXCEPTION!= null) {
        throw DOCUMENTOSSERVICE_EXCEPTION;
    }
    return DOCUMENTOSSERVICE_WSDL_LOCATION;
}
  1. ПРОБЛЕМА заключается в том, что с наших машин в локальных окнах мы заставляем ws правильно реагировать с помощью этой реализации. Однако, когда мы вошли в подготовительные среды под Linux, мы не смогли подключиться. След, который появляется, является следующим
2018-02-21 18:35:15,614 [Thread-22] [ WARN] (com.sun.xml.internal.ws.wspolicy.EffectiveAlternativeSelector:255) ->

WSP0075: Утверждение политики "{ http://schemas.microsoft.com/ws/06/2004/policy/http} BasicAuthentication" было оценено как "НЕИЗВЕСТНО". 2018-02-21 18:35:15,615 [Thread-22] [ WARN] (com.sun.xml.internal.ws.wspolicy.EffectiveAlternativeSelector:255) -> WSP0019: выбрана субоптимальная альтернатива политики на стороне клиента с пригодностью " НЕИЗВЕСТНЫЙ". 2018-02-21 18:35:15,666 [Thread-22] [ОШИБКА] (com.noaris.agis.util.DocumentosServiceUtil:116) -> Usernamejavax.xml.ws.security.auth.username 2018-02-21 18:35:15 667 [Тема 22] [ОШИБКА] (com.noaris.agis.util.DocumentosServiceUtil:117) -> Passwordjavax.xml.ws.security.auth.password 2018-02-21 18:35:15 667 [Тема -22] [ОШИБКА] (com.noaris.agis.util.DocumentosServiceUtil:44) -> Llamada al servicio GetAttachment con los datos: 593718000029818 2018-02-21 18:35:15,741 [Тема-22] [ОШИБКА] (ком.noaris.agis.util.DocumentosServiceUtil:63) -> Ошибка транспорта HTTP: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: сбой при построении пути PKIX: sun.security.provider.certpath.SunCertPathBuilderException: невозможно: невозможно найти действительный путь сертификации к запрошенной цели 2018-02-21 18:35:15,742 [Thread-22] [ОШИБКА] (com.noaris.agis.screens.expedientes.DetalleExpediente_DocumentacionVM:1040) -> Ошибка inesperado durante la obtenci?n de datos del servicio ДокументыСервис Пара Эль Экспеди ente593718000029818 com.noaris.agis.exception.BusinessException по адресу com.noaris.agis.util.DocumentosServiceUtil.getComunicaciones(DocumentosServiceUtil.java:65) в com.noaris.agis.screens.expedientes.Teallet 1028)

The certificates in the preproduction machines are well installed in the java carcets. Therefore the exception unable to find valid certification path to requested target, we can not understand why it is launched.

On the other hand, two warn "UNKNOWN" appear when it enters the DocumentService class. We think that maybe this may be because when we enter the wsdl we need to get credit in advance. In this case we do not know how to insert the username and password before calling the wsdl ... if necessary.

Мы застряли с этой проблемой в течение нескольких недель. Любая помощь будет оценена. Привет и спасибо

1 ответ

Я думаю, что ваша проблема выделена в этой строке: SSLHandshakeException: sun.security.validator.ValidatorException: сбой построения пути PKIX: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации к запрошенной цели

На вашем локальном компьютере с Windows у вас есть встроенный доступ к хранилищу ключей. Но с удаленной машины этот сертификат не виден.

Чтобы быстро убедиться, что это правда, поместите страницу hello.html на этот сайт и проверьте в любом браузере, какой сертификат возвращается по https://yourwebpage.com/hello.html. Пока это не вернет ожидаемый сертификат, ваш код не будет работать.

HTH, Джим

Другие вопросы по тегам