Spring Boot - 调用另一个需要证书的 Web 服务

Posted

技术标签:

【中文标题】Spring Boot - 调用另一个需要证书的 Web 服务【英文标题】:Spring Boot - Calling another web service that requires certificate 【发布时间】:2019-01-31 19:57:39 【问题描述】:

我有一个 Spring Boot 休息服务,它会调用另一个 Web 服务(用 .NET 编写),但它需要安装该 Web 服务的服务器的公共证书。

我收到以下错误:

org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://domain.sample.com/api/message.asmx": sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Process finished with exit code -1

不确定是否可以使用 RestTemplate 调用 .asmx 网络服务,但这是我的代码:

RestTemplate restTemplate = new RestTemplate();

HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.TEXT_XML);

HttpEntity<String> entity = new HttpEntity<>(rawDeviceMessage, httpHeaders);

ResponseEntity<String> resultEntity = restTemplate.postForEntity("https://domain.sample.com/api/message.asmx", entity, String.class);

【问题讨论】:

您是否将 .Net 服务器的公钥添加到服务器的信任库中?如果您的服务不使用受信任的证书,您需要手动将其添加到您的信任库中。 Exception unable to validate certificate of the target in spring MVC的可能重复 嗨@Mustafa,谢谢你。我会检查一下并回复你。 【参考方案1】:

正如@Mustafa 在上面的评论部分中提到的,以下是重复的,问题得到了解决。

Exception unable to validate certificate of the target in spring MVC

【讨论】:

以上是关于Spring Boot - 调用另一个需要证书的 Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

如何使用证书在 Spring Boot 中调用 https Web 服务

如何从另一个新的 Spring Boot 项目调用一个 Spring Boot 项目中存在的 Spring Boot api

Spring boot - ModelAndView 不调用另一个页面

spring boot ssl 客户端证书失败,PKIX 路径构建失败错误

使用 Spring Boot/Spring Security 对 LDAP 进行证书身份验证

使用 Spring Boot 从另一个服务调用 Rest Service 以进行课程注册系统