设置java程序的可信任证书

概述

java程序访问https内容时,会验证https服务器提供的证书的有效性,java程序默认使用$JAVA_HOME/lib/security/cacerts这个keystore文件中保存的可信任证书(基本都是权威的CA机构证书)对https服务器提供的证书进行验证。如果是自签证书,java程序是不会承认的。想要java程序能够承认自签的证书,有2种方法:

  1. 把自签证书导入到cacerts文件中;
  2. 自己创建一个keystore文件,让java程序使用新建的keystore文件。

导入自签证书到cacerts文件

以windows系统为例,假设证书文件路径为C:\cascerts\firstCA.cert,输入如下命令即可

keytool -import \
 -file C:\cascerts\firstCA.cert \
 -alias firstCA \
 -storepass changeit \
 -keystore "%JAVA_HOME%\lib\security\cacerts"
  • -file 证书路径
  • -alias 导入cacerts文件中记录的别名
  • -storepass cacerts密码,默认为changeit
  • -keystore cacerts文件路径

创建keystore文件并引用

创建keystore文件[1]

keytool -import -file C:\cascerts\firstCA.cert -alias firstCA -keystore myTrustStore

启动java程序,传递trust store文件路径[2]

java -Djavax.net.ssl.trustStore=c:\path\of\myTrustStore -jar xxx.jar

参考文档

  1. Generating a KeyStore and TrustStore
  2. java SSL and cert keystore

你可能感兴趣的:(设置java程序的可信任证书)