如何解决此“第四维度”证书丢失问题?

时间:2019-03-28 16:38:31

标签: spring spring-boot

我有一个REST Client Maven模块,该模块负责获取令牌,然后使用此令牌创建请求。

这是“ login()”方法:

  private static final String ROOT_URL = "https://my-url";
  private static final String LOGIN_API = "/LogIn";

  @Autowired
  @Qualifier("myRestTemplate")
  RestTemplate restTemplate;

  public String login() {
    LoginRequest loginRequest = new LoginRequest();
    loginRequest.setAccountName("USER");
    loginRequest.setPassword("P@ssw0rd");
    loginRequest.setTimeout(120);

    LoginResponse loginResponse = restTemplate.postForObject(ROOT_URL + LOGIN_API, loginRequest, LoginResponse.class);
    String token = loginResponse.getLogInResult().getToken();

    log.info(loginResponse.toString());
    return token;
  }

当我从模块内部的JUnit调用此“ login()”方法时,它将起作用。

我还从其他依赖于此其余客户端模块的模块中获得各种服务,他们可以毫无错误地调用它。

现在,我刚刚创建了一个新模块,需要使用该其余客户端服务。当我从这个新模块调用“ login()”服务时,它以:

结尾
ResourceAccessException: I/O error on POST request for "https://my-url/LogIn": 
unable to find valid certification path to requested target

当被调用的URL是一个常量时,在什么情况下而不是其他情况下可能导致此错误的原因是什么?

我尝试检查“ restTemplate”对象在两种情况下是否相同,我认为是相同的,但是即使不是,这怎么可能发生?通过哪种机制?

更新:我尝试在org.springframework.beans上激活spring调试,以查看是否错误的restTemplate注入可能是导致此问题的原因,但是当我从父模块执行此操作时,我什至看不到注入任何restTemplate。

这就像某个进程正在派生的JVM中发生,而这个派生的进程并不了解证书($ JAVA_HOME / jre / lib / security / cacerts中的证书)。

如果我调试来自子模块的调用,则可以看到restTemplate注入正在发生。

0 个答案:

没有答案
相关问题