Me llame en tomcat guerra, un resto de un servicio web. Tengo que hacer la invocación de servicios web con este:

    public UsuarioDTO validarDatosToken(String token, boolean incluirRoles) throws ModeloException, DAOException {

        RestTemplate restTemplate = new RestTemplate();
        UserRestVO page = restTemplate.getForObject("https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"), UserRestVO.class);

        if (page != null && page.getStatusResult() != null && page.getStatusResult().getStatusCode().equals("OK") && page.getUser() != null) {
            ------------
            return datos;
        } else {
            throw new ModeloException(ErroresGeneralesEnum.ERROR_TOKEN_CADUCADO);
        }
    }
}


public Authentication authenticateReal(Authentication authentication) throws AuthenticationException {

    String username = authentication.getName();
    String password = (String) authentication.getCredentials();

    UsuarioDTO usuario = null;
    try {
        usuario = usuariosService.validarDatosToken(username, true);


    } catch (Exception e) {
        e.printStackTrace();
        Logger.getLogger(CustomAuthenticationProvider.class.getName()).error(e);

        throw new BadCredentialsException("Username not found.");
    }



}

El siguiente error se produce cuando se llama al servicio web. Trataré de hacer un montón de cosas pero notting obras:

Creo que el problema es con el certificado pero no estoy de resolverlo.
¿Tiene usted alguna idea?

org.springframework.web.cliente.ResourceAccessException: I/O error en la solicitud GET para «https://xxxxxxxxxxxxxxxxxxxxxxxx«:java.de seguridad.NoSuchAlgorithmException: Error de la construcción de la aplicación (algoritmo: por Defecto, proveedor de: SunJSSE, clase: sol.de seguridad.ssl.SSLContextImpl$DefaultSSLContext); excepciones anidadas es java.net.SocketException: java.de seguridad.NoSuchAlgorithmException: Error de la construcción de la aplicación (algoritmo: por Defecto, proveedor de: SunJSSE, clase: sol.de seguridad.ssl.SSLContextImpl$DefaultSSLContext)
en org.springframework.web.cliente.RestTemplate.doExecute(RestTemplate.java:567)
en org.springframework.web.cliente.RestTemplate.ejecutar(RestTemplate.java:512)
en org.springframework.web.cliente.RestTemplate.getForObject(RestTemplate.java:243)
en personalizado.servicio.usuarios.impl.UsuariosServiceImpl.validarDatosToken(UsuariosServiceImpl.java:69)
en el sol.reflejar.NativeMethodAccessorImpl.invoke0(Native Method)
en el sol.reflejar.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
en el sol.reflejar.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
en java.lang.reflejar.Método.invoke(Método.java:606)
en org.springframework.aop.apoyo.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
en org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
en org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
en org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)
en org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)
en org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
en org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
en org.springframework.aop.marco.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
en com.sol.proxy.$Proxy33.validarDatosToken(Fuente Desconocida)
en custom.view.filter.CustomAuthenticationProvider.authenticateReal(CustomAuthenticationProvider.java:48)
en personalizado.vista.el filtro.CustomAuthenticationProvider.autenticar(CustomAuthenticationProvider.java:37)
en org.springframework.de seguridad.la autenticación.ProviderManager.autenticar(ProviderManager.java:156)
en custom.view.filter.UsernamePasswordAuthenticationFilter.attemptAuthentication(UsernamePasswordAuthenticationFilter.java:103)
en org.springframework.security.web.authentication.AbstractAuthenticationProcessingfilter.doFilter(AbstractAuthenticationProcessingfilter.java:211)
en org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
en org.springframework.de seguridad.web.la autenticación.cierre de sesión.LogoutFilter.doFilter(LogoutFilter.java:110)
en org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
en org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)
en org.springframework.web.el filtro.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
en org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
en org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
en org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
en org.springframework.de seguridad.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
en org.springframework.de seguridad.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
en org.springframework.web.el filtro.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
en org.springframework.web.el filtro.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
en org.apache.catalina.núcleo.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
en org.apache.catalina.núcleo.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
en org.apache.catalina.núcleo.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
en org.apache.catalina.núcleo.StandardContextValve.invoke(StandardContextValve.java:123)
en org.apache.catalina.autenticador.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
en org.apache.catalina.núcleo.StandardHostValve.invoke(StandardHostValve.java:168)
en org.apache.catalina.las válvulas.ErrorReportValve.invoke(ErrorReportValve.java:98)
en org.apache.catalina.las válvulas.AccessLogValve.invoke(AccessLogValve.java:927)
en org.apache.catalina.núcleo.StandardEngineValve.invoke(StandardEngineValve.java:118)
en org.apache.catalina.el conector.CoyoteAdapter.servicio(CoyoteAdapter.java:407)
en org.apache.el coyote.http11.AbstractHttp11Processor.proceso(AbstractHttp11Processor.java:1002)
en org.apache.el coyote.AbstractProtocol$AbstractConnectionHandler.proceso(AbstractProtocol.java:579)
en org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.ejecutar(JIoEndpoint.java:312)
en java.util.concurrente.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
en java.util.concurrente.ThreadPoolExecutor$Trabajador.ejecutar(ThreadPoolExecutor.java:615)
en java.lang.Subproceso.de ejecución(Thread.java:745)
Causado por: java.net.SocketException: java.de seguridad.NoSuchAlgorithmException: Error de la construcción de la aplicación (algoritmo: por Defecto, proveedor de: SunJSSE, clase: sol.de seguridad.ssl.SSLContextImpl$DefaultSSLContext)
en javax.net.ssl.DefaultSSLSocketFactory.throwException(SSLSocketFactory.java:198)
en javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:205)
en el sol.net.www.protocolo.https.HttpsClient.createSocket(HttpsClient.java:409)
en el sol.net.NetworkClient.doConnect(NetworkClient.java:162)
en el sol.net.www.http.HttpClient.openServer(HttpClient.java:432)
en el sol.net.www.http.HttpClient.openServer(HttpClient.java:527)
en el sol.net.www.protocolo.https.HttpsClient.(HttpsClient.java:275)
en el sol.net.www.protocolo.https.HttpsClient.Nuevo(HttpsClient.java:371)
en sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
en el sol.net.www.protocolo.http.HttpURLConnection.plainConnect(HttpURLConnection.java:932)
en sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
en el sol.net.www.protocolo.https.HttpsURLConnectionImpl.conectar(HttpsURLConnectionImpl.java:153)
en org.springframework.http.client.SimpleBufferingClientHttpRequest.executeInternal(SimpleBufferingClientHttpRequest.java:75)
en org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48)
en org.springframework.http.cliente.AbstractClientHttpRequest.ejecutar(AbstractClientHttpRequest.java:53)
en org.springframework.web.cliente.RestTemplate.doExecute(RestTemplate.java:551)
Causado por: java.io.IOException: no Válido formato de almacén de claves
en el sol.de seguridad.proveedor de.JavaKeyStore.engineLoad(JavaKeyStore.java:650)
en el sol.de seguridad.proveedor de.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
en java.de seguridad.Almacén de claves.de carga(Almacén de claves.java:1214)
en el sol.de seguridad.ssl.TrustManagerFactoryImpl.getCacertsKeyStore(TrustManagerFactoryImpl.java:221)
en el sol.de seguridad.ssl.SSLContextImpl$DefaultSSLContext.getDefaultTrustManager(SSLContextImpl.java:528)
en el sol.de seguridad.ssl.SSLContextImpl$DefaultSSLContext.(SSLContextImpl.java:495)
en el sol.reflejar.NativeConstructorAccessorImpl.newInstance0(Native Method)
en el sol.reflejar.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
en el sol.reflejar.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
en java.lang.reflejar.Constructor.newInstance(Constructor.java:526)
en java.de seguridad.Proveedor De$Servicio.newInstance(Proveedor.java:1240)
… 64 más

  • mina excepción fue el org.springframework.web.cliente.ResourceAccessException: I/O error en la solicitud GET para «web-service-url« y, después de comprobar dinámicamente URL fue llamado erróneamente
InformationsquelleAutor MickeyBG | 2015-10-02

2 Comentarios

  1. 4

    De su código no veo ninguna específicos de la configuración de SSL para su RestTemplate. Ya no sé que versión de la Primavera (y relacionadas con HTTPClient), sugiero que trate de comenzar con el siguiente código y ver qué pasa:

    public void tryme() throws ClientProtocolException, IOException {
     String urlOverHttps = "https:xxxxxxx";  
     CloseableHttpClient httpClient = 
          HttpClients.custom()
                 .setSSLHostnameVerifier(new NoopHostnameVerifier())
                 .build();
       HttpComponentsClientHttpRequestFactory reqFactory = 
                  new HttpComponentsClientHttpRequestFactory();
       reqFactory.setHttpClient(httpClient);
    
       ResponseEntity<String> response =  
              new RestTemplate(reqFactory).exchange(
                      urlOverHttps, HttpMethod.GET, null, String.class);
       String responseCode = response.getStatusCode();
    }

    Esto en teoría debería de derivación de certificados de verificación. Se requiere HTTPClient 4.4. Como dije, no exponer muchos detalles de su configuración actual, así que puedo realmente sólo conjetura aquí.

    • Yo thar comprar puedo obtener de un mismo error: errores.ModeloException: I/O error en la solicitud GET para «xxxxxxx»:java.de seguridad.NoSuchAlgorithmException: Error de la construcción de la aplicación (algoritmo: por Defecto, proveedor de: SunJSSE, clase: sol.de seguridad.ssl.SSLContextImpl$DefaultSSLContext); excepciones anidadas es java.net.SocketException: java.de seguridad.NoSuchAlgorithmException: Error de la construcción de la aplicación (algoritmo: por Defecto, proveedor de: SunJSSE, clase: sol.de seguridad.ssl.SSLContextImpl$DefaultSSLContext)
    • El último error que la pila completa de escribir es el siguiente: Causada por: java.io.IOException: no Válido formato de almacén de claves en com.sol.crypto.proveedor de.JceKeyStore.engineLoad(JceKeyStore.java:709) en java.de seguridad.Almacén de claves.de carga(Almacén de claves.java:1214) en el sol.de seguridad.ssl.TrustManagerFactoryImpl.getCacertsKeyStore(TrustManagerFactoryImpl.java:221) en el sol.de seguridad.ssl.SSLContextImpl$DefaultSSLContext.getDefaultTrustManager(SSLContextImpl.java:528) al sol.de seguridad.ssl.SSLContextImpl$DefaultSSLContext.<init>
  2. 1

    He encontrado el error
    Alguien cambio el etc/init.d/tomcat7 para incluir dos líneas con un inválido cert de la tienda. La eliminación de ello, es el trabajo! gracias a todos los

    -Djavax.net.ssl.almacén de claves=mySrvKeystore -Djavax.net.ssl.keyStorePassword=123456

Dejar respuesta

Please enter your comment!
Please enter your name here