我有一個通過HTTPS託管webaplication和rest API的web服務器。有一個由安裝在服務器上的Symantech簽署的* .thedomain.com 的證書。 「thedomain」就是爲了這個例子。這不是真正的域名。如何使用由公共CA授權簽署的服務器公共證書解決「無法找到有效的證書路徑到請求的目標」?
我認爲信任鏈沒有問題,因爲服務器提供的證書被任何瀏覽器的默認設置接受而不做任何事情。
現在我正在嘗試在Java中爲該服務器提供的其餘API創建一個客戶端。
問題是要拋棄一個sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path
到要求的目標。如果我正確理解這一點,這意味着JDK支持的ca不提供有效的證書路徑,以便正確驗證服務器。
什麼是這個錯誤的良好解決方案,同時仍然能夠驗證服務器? Web瀏覽器如何驗證服務器而不是JDK(7)?
它在瀏覽器中工作,因爲CA證書位於瀏覽器的密鑰環中,而不在JDK使用的密鑰環中。 –
@StefanoSanfilippo謝謝。我沒有手動添加任何東西到瀏覽器的鑰匙圈。有沒有辦法告訴Java使用廣泛接受的可信CA列表(如大多數瀏覽器默認設置所接受的列表)? –
從命令行嘗試使用'keytool -keystore cacerts -importcert -alias aliasOfTheCertificate -file FileNameOfTheCertificate.cer'。請注意,許多Linux發行版已經發布了一個包含所有可信根的'ca-certs-java'軟件包。 –