詳細報錯信息
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
原因
關于qyapi.weixin.qq.com等域名更新HTTPS證書的緊急通知
2025/04/24
發布
各位企業微信的開發者:
大家好,qyapi.weixin.qq.com以及openhw.work.weixin.qq.com目前使用的https證書將在2025年5月17日過期,企業微信團隊近期在灰度更換新證書,新證書由DigiCert Global Root G2 根 CA 頒發。灰度過程中發現部分開發者在應用程序中通過硬編碼方式指定了特定的根證書,但指定的根證書過舊未兼容DigiCert Global Root G2 根,從而導致證書校驗不通過,ssl握手失敗。
請各位開發者盡快檢查:
如果有程序內置根證書的,請在2025年4月29日前完成兼容G2根證書,否則可能影響正常服務。
如果程序沒有內置根證書,但操作系統太舊(比如xp/win7系統)不支持G2根證書的,請升級操作系統。
解決方案一
現有JDK升級證書
1 下載證書
DigiCertGlobalRootG2.crt.pem文件的下載地址:
2 導入證書
1) 進入本地jre文件夾,找到lib文件夾下的security文件
2) 在窗口地址欄中,輸出cmd,進入命令行模式
3)輸入keytool -importcert -alias DigiCertGlobalRootG2With2024 -file "D:/DigiCertGlobalRootG2.crt.pem" -keystore "C:\Program Files\Java\jre1.8.0_77\lib\security\cacerts" -storepass changeit
4) 其中,%JAVA_HOME%
是環境變量里面配置的,D:/DigiCertGlobalRootG2.crt.pem
,是剛才下載文件的地址,C:\Program Files\Java\jre1.8.0_77\lib\security\cacerts
是jre的證書的地址
5) 在是否信任該證書位置,輸入yes,然后回車。
6) 輸入keytool -list -v -keystore cacerts > mycacerts.txt
7) 密鑰庫口令:changeit
8) 點擊回車,在當前文件目錄內,找到mycacerts.txt
文件
9) 打開文件,查找digicertglobalrootg2
關鍵字
10) 如果找到了,就說明添加上了,如果沒找到,重啟java應用,或者重啟tomcat再試試。
3 重啟java程序驗證
解決方案二
升級jdk到1.8的最后一個免費版本,202。
JDK 8 最后一個免費版本 下載
新的JDK中,自帶了DigiCert Global Root G2證書