概述
java程序訪問(wèn)https內(nèi)容時(shí)卵佛,會(huì)驗(yàn)證https服務(wù)器提供的證書的有效性,java程序默認(rèn)使用$JAVA_HOME/lib/security/cacerts
這個(gè)keystore文件中保存的可信任證書(基本都是權(quán)威的CA機(jī)構(gòu)證書)對(duì)https服務(wù)器提供的證書進(jìn)行驗(yàn)證。如果是自簽證書开睡,java程序是不會(huì)承認(rèn)的。想要java程序能夠承認(rèn)自簽的證書文捶,有2種方法:
- 把自簽證書導(dǎo)入到cacerts文件中荷逞;
- 自己創(chuàng)建一個(gè)keystore文件粹排,讓java程序使用新建的keystore文件种远。
導(dǎo)入自簽證書到cacerts文件
以windows系統(tǒng)為例,假設(shè)證書文件路徑為C:\cascerts\firstCA.cert
顽耳,輸入如下命令即可
keytool -import \
-file C:\cascerts\firstCA.cert \
-alias firstCA \
-storepass changeit \
-keystore "%JAVA_HOME%\lib\security\cacerts"
- -file 證書路徑
- -alias 導(dǎo)入cacerts文件中記錄的別名
- -storepass cacerts密碼,默認(rèn)為changeit
- -keystore cacerts文件路徑
創(chuàng)建keystore文件并引用
創(chuàng)建keystore文件[1]
keytool -import -file C:\cascerts\firstCA.cert -alias firstCA -keystore myTrustStore
啟動(dòng)java程序射富,傳遞trust store文件路徑[2]
java -Djavax.net.ssl.trustStore=c:\path\of\myTrustStore -jar xxx.jar