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

Spring Cloud中的Eureka客户端与启用SSL的Eureka服务器连接时,PKIX路径构建失败

洪和平
2023-03-14

我正在使用spring Boot构建基于云的微服务架构。我们只使用嵌入式容器,这是spring Boot的tomcat。此外,我们还将证书添加到jvm密钥库中。

有趣的是,当我将Eureka服务器保持在非安全端口上,即保持在http上时,我所有的Eureka客户端都启用了ssl,能够毫无问题地连接,但我并不真的需要在我的体系结构中这样做,因为我还使用zuul作为所有微服务的单一入口点。

当使用http时,一切都很好,但当启用https和SSL时,就开始失败了。

以下是我的Eureka服务器配置。

eureka.instance.hostname= localhost
eureka.client.registerWithEureka= false
eureka.client.fetchRegistry= false
server.port= 8761

server.ssl.enabled = true
server.ssl.key-store=classpath:ssl.keystore
server.ssl.key-store-password=changeit

and my Eureka Client Configuration.
server.port=8181
spring.application.name=my-client
eureka.instance.hostname=localhost
eureka.instance.securePort = 8181
eureka.instance.securePortEnabled = true
eureka.instance.nonSecurePortEnabled = false
eureka.instance.metadataMap.hostname = ${eureka.instance.hostname}
eureka.instance.metadataMap.securePort = ${server.port}
eureka.instance.homePageUrl = https://${eureka.instance.hostname}:${server.port}/
eureka.instance.statusPageUrl = https://${eureka.instance.hostname}:${server.port}/admin/info
eureka.client.serviceUrl.defaultZone: https://localhost:8761/eureka/ 
server.ssl.enabled = true
server.ssl.key-store=classpath:ssl.keystore
server.ssl.key-store-password=changeit
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(Unknown Source) ~[na:1.8.0_91]
at sun.security.validator.PKIXValidator.engineValidate(Unknown Source) ~[na:1.8.0_91]
at sun.security.validator.Validator.validate(Unknown Source) ~[na:1.8.0_91]
at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source) ~[na:1.8.0_91]
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source) ~[na:1.8.0_91]
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) ~[na:1.8.0_91]
... 50 common frames omitted

如果有人对此有见解,我将非常感谢。

共有1个答案

谯阳伯
2023-03-14

IHO您需要在您的Eureka客户端配置trust-store,而不是key-store。属性server.ssl.key-storeserver.ssl.key-store-password仅适用于嵌入式容器。您需要在您的Eureka客户机中设置trust-store,当您的Eureka客户机将自身注册到Eureka服务器时,将在验证服务器的SSL证书期间使用该存储库

尝试在您的eureka客户端上定义以下系统属性。

java -Djavax.net.ssl.trustStore=xxxx
java -Djavax.net.ssl.trustStorePassword=xxxx
 类似资料:
  • 问题内容: 我正在与一个名为CommWeb的商户帐户集成,并向其URL(https://migs.mastercard.com.au/vpcdps)发送一个SSL帖子。当我尝试发送帖子时,出现以下异常: 执行该帖子的代码(我没有写过,并且已经存在于我们的代码库中)是: 商户帐户集成的文档对证书一无所知。他们确实提供了一些似乎盲目接受证书的示例JSP代码: 我们的Web应用程序有一个密钥库,我尝试使

  • pom.xml 主应用程序类 Application.Properties eureka客户端设置 pom.xml Application.Properties 我在eureka-server仪表板(http://localhost:8761)中没有看到向Eureka server注册的micro-service-currency-exchange-service 为什么eureka客户端没有注册

  • 我正在使用spring、spring boot、eureka(用于服务发现)和ribbon开发一个微服务应用程序。 我的应用程序由三个服务组成:客户端、服务器和eureka服务器 客户端和服务器都在eureka服务器上注册,之后客户端使用eureka服务发现调用服务器。 我可以在本地运行应用程序,一切都很好。 但是当部署在aws上时,事情就会失控。 接下来的步骤 同一安全组中有三个ec2实例 每个

  • 我已经能够通过HTTP使用Eureka+ZUUL+Ribbon+Config Server设置并成功验证Spring cloud设置。 然而,当我尝试转移到HTTPS时,单个服务在HTTPS上运行良好,但Eureka客户端发现却失败了。

  • 我能够让eureka服务器以点对点模式运行。但我很好奇的一件事是如何让服务发现客户端注册到多个eureka服务器。 我的用例如下:<br>假设我有一个服务注册到其中一个eureka服务器(例如服务器a),并且该注册被复制到它的对等服务器。服务实际上指向服务器A。如果服务器A停机,客户机希望与服务器A续费,如果服务器A不再存在,续费如何工作。我是否需要同时向这两个服务器注册?如果不是,那么如果客户端

  • 问题描述: 我们有100多个springboot服务运行在不同的环境中:dev、uat、prod等,对于每一个,我们都有eureka服务器正在运行以注册这些微服务,这没有问题,在部署一个服务之后,它会注册并且工作良好,但是当我们在本地运行一个服务时,它会在prod的eureka服务器中注册,