【发布时间】:2017-10-17 19:20:00
【问题描述】:
我正在使用 Spring Boot 构建基于云的微服务架构。我们仅使用嵌入式容器,即用于 Spring Boot 的 tomcat。此外,我们还向 jvm 密钥库添加了证书。
为了更简单,我只创建了两个 spring boot 应用。
1) Spring Boot Eureka Server
2) Spring Boot Eureka 客户端
两者都具有与上述相同的配置,当我在 https 上启动 Eureka 服务器时,它成功启动,没有任何问题,然后我启动 Eureka 客户端,它运行良好,直到它请求注册到 Eureka 服务器,然后它开始失败。
有趣的是,当我将 Eureka Server 保持在非安全端口上时,即保持在 http 上,那么我所有启用 ssl 的 eureka 客户端都可以毫无问题地连接,但我在架构中并不真正需要它,因为我也使用 zuul for single我所有微服务的入口点。
当它是 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
我确实尝试了很多次尝试以使其工作,其他人在 stackoverflow 中尝试过,但老实说,他们都没有工作。我还探索了其他建议并将它们纳入其中,但这也不起作用。我不确定我的配置有什么问题。有没有人遇到过类似的问题以及如何解决的?
如果有人对此有见解,我将不胜感激。
【问题讨论】:
标签: spring-boot ssl-certificate spring-cloud netflix-eureka spring-cloud-netflix