0 ssl-certificate spring-boot spring-cloud netflix-eureka spring-cloud-netflix
我正在使用 spring boot 构建基于云的微服务架构。我们只使用嵌入式容器,它是用于 spring boot 的 tomcat。此外,我们还向 jvm 密钥库添加了证书。
为了使它更简单,我只创建了两个 Spring Boot 应用程序。
1) Spring boot Eureka Server
2) Spring boot Eureka client
两者都具有与上述相同的配置,当我在 https 上启动 Eureka 服务器时,它成功启动而没有任何问题,之后我启动了 Eureka 客户端,运行良好,直到它请求注册到 Eureka 服务器,然后它开始失败。
有趣的是,当我将 Eureka 服务器保持在非安全端口上,即保持在 http 上时,我所有启用 ssl 的 eureka 客户端都可以毫无问题地连接,但我的架构中并不真正需要它,因为我也使用 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
Run Code Online (Sandbox Code Playgroud)
下面是异常跟踪。
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
Run Code Online (Sandbox Code Playgroud)
我确实尝试了无数次尝试和尝试以使其工作,其他人在 stackoverflow 中尝试过,但老实说,它们都不起作用。我还探讨了其他建议并将其纳入其中,但这也不起作用。我不确定我的配置有什么问题。有没有人遇到过类似的问题以及如何解决?
如果有人对此有所了解,我将不胜感激。
IHO 您需要trust-store在 Eureka 客户端进行配置,而不是key-store. 属性server.ssl.key-store和server.ssl.key-store-password仅适用于您的嵌入式容器。您需要在 Eureka 客户端中设置的是trust-store,当您的 Eureka 客户端向 Eureka Server 注册时,将在从您的服务器验证 SSL 证书期间使用
尝试在您的 eureka 客户端上定义以下系统属性。
java -Djavax.net.ssl.trustStore=xxxx
java -Djavax.net.ssl.trustStorePassword=xxxx
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2293 次 |
| 最近记录: |