我不認爲這是像this one這樣的問題的重複,因爲證書被java識別。自簽名根CA不適用於Java
出於測試的宗旨,我已經生成自己的根CA和這樣的證書:
自己的根CA - >中間CA - >我的證書
我創建了一個密鑰庫與它我成功地在我的java-server中使用該密鑰庫來提供加密內容(在Eclipse應用程序中使用Jetty)。我可以在Firefox中使用SSL來調用我的rest-api(在添加中間CA之後)就好了,一切正常。
但是,我不能從另一個Java應用程序(使用javax.ws.rs)調用Rest-API,因爲證書鏈似乎是錯誤的。
javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路徑建設失敗:sun.security.provider.certpath.SunCertPathBuilderException:無法找到請求的目標的有效證書路徑
如果我檢查異常詳細信息,我可以看到,SunCertPathBuilderException
包含我的客戶端證書和中間CA證書,但不包含Root-CA證書(在字段adjList中)。
爲什麼應用程序找不到Root-CA?我猜這就是這個問題,但密鑰庫中的Root-CA 是,我使用的是服務器的相同密鑰庫,所以我知道它應該是正確的。
謝謝。最後,這不是真正的問題(Eclipse忽略了野蠻設置),但我覺得你的回答是絕對正確的。 (事實上它幫助我,因爲我注意到調試輸出丟失了) – looper