程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java https服務器證書認證問題解決方案

Java https服務器證書認證問題解決方案

編輯:JAVA綜合教程

Java https服務器證書認證問題解決方案


Java https連接的”unable to find valid certification path to requested target”,”PKIX path building failed”錯誤

問題原因

這個問題的是由於Java自帶的根證書庫中不包含HTTPS服務器上的根證書,因此無法得到認證。

解決方案

比較容易實現的方案有兩種:

導入服務器證書到本地Java環境 代碼中忽略證書信任問題

由於第二種方案會導致安全性問題,因此並不推薦。

證書導入注意事項

將服務器的根證書導入到Java運行環境的根證書庫中,能解決對應的服務器https連接問題。

實現方式是使用$JAVA_HOME/jre/bin下的keytool工具將服務器端的證書添加到jre/lib/security/cacerts文件中。
需要注意的是:

確定當前Java程序所用的java運行環境jre的路徑(可能為jdk下的jre,也可能是單獨的jre)。 確定有jre/lib/security/cacerts文件的寫入權限(可以用管理員權限運行keytool)。

詳細步驟:

1. 獲取服務器端的證書文件

可以使用浏覽器打開服務器網站頁面,然後導出證書文件,假設導出的證書文件為test.crt 。

2. 生成keystore文件

利用keytool生成密鑰文件keystore:

keytool -importcert -noprompt -trustcacerts -alias test -file test.cer -keystore ~/mykeystore

這裡會要求設置口令,設置後請記住口令 。

3. 導入證書到Java運行時環境

將證書導入jre/lib/security/cacerts:

keytool -importkeystore -srckeystore ~/keystore -destkeystore [path_to_jre]/lib/security/cacerts

會要求輸入目標密鑰庫口令(也就是jre/lib/security/cacerts 的口令,默認是changeit或者changeme),以及源密鑰庫口令(之前設置的口令).

最後會顯示是否導入成功。如果成功則重啟Java程序。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved