存取https需要有憑證。若使用瀏覽器存取https的web site則憑證的問題由瀏覽器處理(將憑證匯入瀏覽器),但若使用Java code直接存取https的web site或web service,就需要自己處理。
若沒有合法憑證去存取https的URL,常見錯誤訊息為:sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
處理方式是必須將https的憑證(certificate)匯入到自己的JRE的trust store內,該trust store在JRE內,如:
1. C:\Java\jre1.8.0_45\lib\security\cacerts
2. C:\Java\jdk1.8.0_45\jre\lib\security\cacerts
因為JDK內也有JRE,所以有選項2。
一旦匯入完成後,只要由該JRE啟動的Java code都可以直接訪問該https網址。
匯入方式為:
1. 由https://github.com/escline/InstallCert下載 InstallCert.java,並依照文章說明步驟進行。文章內容較謹慎,方式為產出trust store檔案後,將憑證由檔案匯出,再匯入自己的JRE內的trust store。
2. 經驗上,直接把產出的trust store檔案置換JRE的trust store檔案也可以:
甲、產出檔名若為「jssecacerts」,先改名為「cacerts」。
乙、置換JRE內的cacerts,記得先備份,有問題才能還原。
沒有留言:
張貼留言