当前位置: 首页 > 知识库问答 >
问题:

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

公子昂
2023-03-14

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



}

共有1个答案

池赞
2023-03-14

从您的代码中,我没有看到RESTTemplate的任何特定SSL配置。因为我不知道Spring的哪个版本(以及相关的HTTPClient),所以我建议尝试从下面的代码开始,看看会发生什么:

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();
}

这在理论上应该绕过证书检查。它需要HttpClient4.4。正如我所说,您没有公开当前配置的许多细节,所以我在这里只能胡乱猜测。

 类似资料:
  • 我总是在尝试获取https资源时得到相同的错误: 我有一个运行应用程序的自签名虚拟主机,应用程序在上运行良好,但我需要。 我尝试了这个解决方案,但没有成功,也犯了同样的错误 获取所有必需的证书(root和任何中间CA) 使用keytool和BouncyCastle提供程序创建密钥库并导入证书 在android应用程序中加载密钥存储库并使用它进行安全连接不要使用标准java.net.ssl.Http

  • 我正在从事一个Spring项目,该项目实现了一个简单的控制台应用程序,该应用程序必须调用一个外部REST web服务,向其传递一个参数并从中获取响应。 此Web服务的调用是: 其中6是指定的ID。如果在浏览器中(或通过cURL工具)打开此地址,将获得预期的错误消息: 这个错误消息是这个请求的预期响应,我也使用cURL工具正确地获取了它来执行请求。 所以我必须从我的Spring应用程序执行这个GET

  • 我有一个rest webservice,它被java程序调用。rest服务提供商给了我们一个jwt令牌。当我在chrome(swagger)或postman客户端中测试它时,它工作正常。当我尝试从java(webClient)调用它时。程序抛出错误: 这就是它的名字: 有人面对过这个吗?

  • 我已经购买了一个Azure应用程序服务证书,以获得“A”的记录。之后,我试图将证书导入到密钥库中,但我得到的错误代码为500,如所附屏幕所示。 步骤1-在Azure中将证书导入到密钥库以进行安全管理。

  • 我使用Spring RestTemplate发出HTTPS请求,我想忽略SSL证书 下面是我创建restTem板请求的代码: 当我使用服务器主机名时,此请求有效,但当我使用服务器IP地址时,会出现以下异常:

  • 所以有人可以请解释一下我如何在GoDaddy上安装Cpanel中的软件包?