Frühling - RestTemplate Fehler beim Aufruf einer https-rest-Dienst (Zertifikat-Fehler)
Rufe ich in tomcat Krieg eine rest-web-service. Ich Mach die web-service-Aufruf mit dieser:
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.");
}
}
Folgende Fehler wird erzeugt, wenn der web-service aufgerufen wird. Ich versuche zu tun, eine Menge Dinge, aber notting funktioniert:
Ich denke, dass das problem mit dem Zertifikat, aber ich dont es zu lösen.
¿Haben Sie eine Idee?
org.springframework.web.client.ResourceAccessException: I/O error on-GET-Anfrage für "https://xxxxxxxxxxxxxxxxxxxxxxxx":java.Sicherheit.NoSuchAlgorithmException: Fehler Bau-Implementierung (Algorithmus: Default provider: SunJSSE, Klasse: Sonne.Sicherheit.ssl.SSLContextImpl$DefaultSSLContext); nested exception is java.net.SocketException: java.Sicherheit.NoSuchAlgorithmException: Fehler Bau-Implementierung (Algorithmus: Default provider: SunJSSE, Klasse: Sonne.Sicherheit.ssl.SSLContextImpl$DefaultSSLContext)
bei org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:567)
bei org.springframework.web.client.RestTemplate.execute(RestTemplate.java:512)
bei org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:243)
bei custom.service.usuarios.impl.UsuariosServiceImpl.validarDatosToken(UsuariosServiceImpl.java:69)
bei der sun.reflektieren.NativeMethodAccessorImpl.invoke0(Native-Methode)
bei der sun.reflektieren.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
bei der sun.reflektieren.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
bei java.lang.reflektieren.Methode.invoke(Method.java:606)
bei org.springframework.aop.Unterstützung.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
bei org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
bei org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
bei org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)
bei org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)
bei org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
bei org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
bei org.springframework.aop.Rahmen.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
bei com.Sonne.proxy.$Proxy33.validarDatosToken(Quelle Unbekannt)
bei custom.view.filter.CustomAuthenticationProvider.authenticateReal(CustomAuthenticationProvider.java:48)
bei custom.Blick.filter.CustomAuthenticationProvider.authentifizieren(CustomAuthenticationProvider.java:37)
bei org.springframework.Sicherheit.die Authentifizierung.ProviderManager.authentifizieren(ProviderManager.java:156)
bei custom.view.filter.UsernamePasswordAuthenticationFilter.attemptAuthentication(UsernamePasswordAuthenticationFilter.java:103)
bei org.springframework.security.web.authentication.AbstractAuthenticationProcessingfilter.doFilter(AbstractAuthenticationProcessingfilter.java:211)
bei org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
bei org.springframework.Sicherheit.web.die Authentifizierung.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
bei org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
bei org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)
bei org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
bei org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
bei org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
bei org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
bei org.springframework.Sicherheit.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
bei org.springframework.Sicherheit.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
bei org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
bei org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
bei org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
bei org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
bei org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
bei org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
bei org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
bei org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
bei org.apache.catalina.Ventile.ErrorReportValve.invoke(ErrorReportValve.java:98)
bei org.apache.catalina.Ventile.AccessLogValve.invoke(AccessLogValve.java:927)
bei org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
bei org.apache.catalina.- Anschluss.CoyoteAdapter.service(CoyoteAdapter.java:407)
bei org.apache.coyote.http11.AbstractHttp11Processor.Prozess(AbstractHttp11Processor.java:1002)
bei org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.Prozess(AbstractProtocol.java:579)
bei org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
bei java.util.gleichzeitige.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
bei java.util.gleichzeitige.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
bei java.lang.Thread.run(Thread.java:745)
Verursacht durch: java.net.SocketException: java.Sicherheit.NoSuchAlgorithmException: Fehler Bau-Implementierung (Algorithmus: Default provider: SunJSSE, Klasse: Sonne.Sicherheit.ssl.SSLContextImpl$DefaultSSLContext)
bei javax.net.ssl.DefaultSSLSocketFactory.throwException(SSLSocketFactory.java:198)
bei javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:205)
bei der sun.net.www.Protokoll.https.HttpsClient.createSocket(HttpsClient.java:409)
bei der sun.net.NetworkClient.doConnect(NetworkClient.java:162)
bei der sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
bei der sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
bei der sun.net.www.Protokoll.https.HttpsClient.(HttpsClient.java:275)
bei der sun.net.www.Protokoll.https.HttpsClient.Neue(HttpsClient.java:371)
bei sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
bei der sun.net.www.Protokoll.http.HttpURLConnection.plainConnect(HttpURLConnection.java:932)
bei sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
bei der sun.net.www.Protokoll.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
bei org.springframework.http.client.SimpleBufferingClientHttpRequest.executeInternal(SimpleBufferingClientHttpRequest.java:75)
bei org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48)
bei org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53)
bei org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:551)
Verursacht durch: java.io.IOException: Invalid keystore format
bei der sun.Sicherheit.Anbieter.JavaKeyStore.engineLoad(JavaKeyStore.java:650)
bei der sun.Sicherheit.Anbieter.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
bei java.Sicherheit.KeyStore.Belastung(KeyStore.java:1214)
bei der sun.Sicherheit.ssl.TrustManagerFactoryImpl.getCacertsKeyStore(TrustManagerFactoryImpl.java:221)
bei der sun.Sicherheit.ssl.SSLContextImpl$DefaultSSLContext.getDefaultTrustManager(SSLContextImpl.java:528)
bei der sun.Sicherheit.ssl.SSLContextImpl$DefaultSSLContext.(SSLContextImpl.java:495)
bei der sun.reflektieren.NativeConstructorAccessorImpl.newInstance0(Native-Methode)
bei der sun.reflektieren.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
bei der sun.reflektieren.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
bei java.lang.reflektieren.Konstruktor.newInstance(Constructor.java:526)
bei java.Sicherheit.Anbieter$Service.newInstance(Anbieter.java:1240)
... 64 mehr
- mine Ausnahme war org.springframework.web.client.ResourceAccessException: I/O error on-GET-Anfrage für "web-service-url" und nach der Prüfung dynamisch-URL wurde falsch genannt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Von deinem code, den ich dont sehen irgendwelche spezifischen SSL-Konfiguration für Ihre RestTemplate. Da ich nicht weiß, welche version von Spring (und Verwandte HTTPClient), schlage ich vor, versuchen Sie, beginnend mit den folgenden code und sehen, was passiert:
Dies sollte in der Theorie bypass-CERT überprüfen. Es erfordert HTTPClient 4.4. Als ich sagte, Sie nicht setzen viele details zu Ihrer aktuellen Konfiguration, so kann ich wirklich nur wild raten hier.
Ich habe den Fehler gefunden
Jemand ändern etc/init.d/tomcat7 umfasst zwei Zeilen mit einem ungültigen cert store. Entfernen Sie es, es funktioniert! vielen Dank an alle
-Djavax.net.ssl.keyStore=mySrvKeystore -Djavax.net.ssl.keystorePass Word=123456