Junit работает нормально по отдельности, но завершается неудачно во время сборки maven, давая sun.security.provider.certpath.SunCertPathBuilderException - PullRequest
0 голосов
/ 19 мая 2019

Junit тестирует ответ JMS от mockserver.Junit не может найти путь сертификата во время сборки maven, но находит его и работает без исключения при индивидуальном запуске.

связанный с сертификатом application.yml:

bridge:
   conduit:
    keystore:
     type: pkcs12
     password: ENC(l4/yeZUp8n4v7iArP1H9OWeVHUO5JCM2)
     location: src/main/resources/config/certificatessl.p12
jasypt:
  encryptor:
    password: G;SobWzm9Z;zWOMQuUF

junit в тестовом классеиспользует следующий mockserver:

mockServer.when(HttpRequest.request("/gateway/spec").withSecure(true).withBody(Mockito.anyString()))
                .respond(HttpResponse.response(myJsonObject));

Контекст загружает mockserver:

   @Bean(destroyMethod = "stop")
   @Lazy
   public ClientAndServer mockServer() {

       ConfigurationProperties.deleteGeneratedKeyStoreOnExit(true);
       ClientAndServer mockServer = ClientAndServer.startClientAndServer(7071);
       HttpsURLConnection
               .setDefaultSSLSocketFactory(KeyStoreFactory.keyStoreFactory().sslContext().getSocketFactory());

       return mockServer;
   }

application-cxfconduit.xml:

    <http:conduit name="{/b2b/Services}PreparationPort.http-conduit">
        <http:tlsClientParameters disableCNCheck="true" secureSocketProtocol="TLSv1.2">
            <sec:keyManagers keyPassword="#{environment['bridge.conduit.keystore.password']}">
                <sec:keyStore type="${bridge.conduit.keystore.type}"
                    password="#{environment['bridge.conduit.keystore.password']}"
                    file="${bridge.conduit.keystore.location}" />
            </sec:keyManagers>
        </http:tlsClientParameters>

        <http:client Connection="close" ConnectionTimeout="${bridge.conduit.connectionTimeout:30000}"
            ReceiveTimeout="${bridge.conduit.receiveTimeout:120000}" ProxyServer="${bridge.conduit.proxy.address:}"
            ProxyServerPort="${bridge.conduit.proxy.port:}" ProxyServerType="HTTP" AutoRedirect="true" AllowChunking="false" />

        <http:proxyAuthorization>
            <sec:UserName>"${bridge.conduit.proxy.username:}"</sec:UserName>
            <sec:Password>"${bridge.conduit.proxy.password:}"</sec:Password>
        </http:proxyAuthorization>
    </http:conduit>

Почему он дает sun.security.validator.ValidatorException только во времяmaven build, тогда как junit успешно работает индивидуально?

Исключение, которое выдается при сборке maven:

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

Будут благодарны за любые предложения!

...