我的本地開發機器上有一個有效的密鑰庫,它包含通過HTTPS訪問web服務的證書。複製java密鑰庫
System.setProperty("javax.net.ssl.truststore", "C:\\<workspaceprojectPath>\\SIPkeystore\\truststore.jks"); // sollte wohl auch ohne Keystore klappen
System.setProperty("javax.net.ssl.keyStore", "C:\\<workspaceprojectPath>\\SIPkeystore\\SIPkeystore.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "SECRET");
現在我想從另一個項目訪問證書:
我在我的項目通過訪問該密鑰庫。在那裏,我提供了與另一個(本地)項目目錄中的密鑰庫相同的(完整)路徑。
顯然,路徑仍然是由jvm找到的,而且正在設置屬性,但在訪問Web服務時,我得到的錯誤消息與我沒有添加密鑰庫一樣。
當試圖運行的應用程序,我得到一個
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid
certification path to requested target
是否有複製現有的密鑰庫的可能性?當我們將應用程序部署到我們的服務器時,這也很重要。該應用程序將作爲獨立的jar運行。 (沒有web服務器)
編輯: 好,拷貝密鑰庫似乎並不成爲問題,因爲我能夠同時使用原來的密鑰庫文件的本地副本運行原來的應用程序。這似乎是一個配置問題。
您確定在第二個項目中連接到同一個Web服務嗎? – user1516873
您確定簽名證書已添加到trustStore中,而不是keyStore中? (只是問,因爲我這樣做,並想知道爲什麼它不起作用!) –
@Devon_C_Miller:我將它添加到密鑰庫。我認爲信任庫只是爲了確保密鑰庫是可信的。你能否詳細說明一下。謝謝 – LuigiEdlCarno