0

我正在使用spring boot.u構建基於雲的微服務體系結構。我們僅使用嵌入式容器,這是tomcat用於彈簧引導。此外,我們還向jvm keystore添加了證書。PKIX路徑構建失敗,而Eureka客戶端使用SSL連接啓用Spring Cloud中的Eureka服務器

爲了使它更簡單,我創建了只有兩個春季啓動應用程序。

1)春季啓動尤里卡服務器
2)春季啓動尤里卡客戶

兩者都如上面提到的,當我開始尤里卡服務器上HTTPS之後,沒有任何問題成功啓動具有相同的配置,我開始尤里卡客戶端直到它向Eureka服務器請求註冊並且之後開始失敗。

有趣的是,當我將Eureka服務器保留在非安全端口上,即繼續使用http時,我的所有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 

以下是異常跟蹤。

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

IHO您需要在您的Eureka客戶端配置​​,而不是key-store。財產server.ssl.key-storeserver.ssl.key-store-password只是爲您的嵌入式容器。你需要設置在你的客戶尤里卡是什麼​​將從您的服務器驗證SSL證書,當你尤里卡客戶端本身註冊到尤里卡服務器

嘗試定義您的尤里卡客戶端上的以下系統屬性中使用。

java -Djavax.net.ssl.trustStore=xxxx 
java -Djavax.net.ssl.trustStorePassword=xxxx 
相關問題