Java Spring-RestTemplate调用https rest服务时出错(证书错误)

Java Spring-RestTemplate调用https rest服务时出错(证书错误),java,spring,rest,ssl,ssl-certificate,Java,Spring,Rest,Ssl,Ssl Certificate,我将tomcat war称为rest web服务。我使用以下命令执行web服务调用: public UsuarioDTO validarDatosToken(String token, boolean incluirRoles) throws ModeloException, DAOException { RestTemplate restTemplate = new RestTemplate(); UserRestVO page = restTempl

我将tomcat war称为rest web服务。我使用以下命令执行web服务调用:

    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.");
    }



}
调用web服务时会产生以下错误。我尝试做很多事情,但不成功:

我认为问题出在证书上,但我没有解决它。 你知道吗

org.springframework.web.client.ResourceAccessException:GET请求“”时发生I/O错误:java.security.NoSuchAlgorithmException:构造实现时出错(算法:默认,提供程序:SunJSSE,类:sun.security.ssl.SSLContextImpl$DefaultSSLContext);嵌套异常为java.net.SocketException:java.security.NoSuchAlgorithmException:构造实现时出错(算法:默认,提供程序:SunJSSE,类:sun.security.ssl.SSLContextImpl$DefaultSSLContext) 位于org.springframework.web.client.restemplate.doExecute(restemplate.java:567) 位于org.springframework.web.client.restemplate.execute(restemplate.java:512) 位于org.springframework.web.client.restemplate.getForObject(restemplate.java:243) 位于custom.service.usuarios.impl.UsuariosServiceImpl.validatdatostoken(UsuariosServiceImpl.java:69) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:606) 位于org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) 位于org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) 在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:157)上 位于org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) 位于org.springframework.transaction.interceptor.TransactionSpectSupport.invokeWithinTransaction(TransactionSpectSupport.java:262) 位于org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) 在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:179)上 位于org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) com.sun.proxy.$Proxy33.validatostoken(未知来源) 位于custom.view.filter.CustomAuthenticationProvider.authenticateReal(CustomAuthenticationProvider.java:48) 在custom.view.filter.CustomAuthenticationProvider.authenticate(CustomAuthenticationProvider.java:37)中 位于org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:156) 在custom.view.filter.UsernamePasswordAuthenticationFilter.attemptAuthentication(UsernamePasswordAuthenticationFilter.java:103)中 位于org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:211) 位于org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 位于org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) 位于org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 位于org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50) 位于org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 位于org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 位于org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 位于org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 位于org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 位于org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 位于org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) 位于org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) 位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) 位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 运行(Thread.java:745) 原因:java.net.SocketExceptio
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();
}