在JDK中导入CA根证书

API服务器使用自生成的SSL证书时,通常的做法是在Java客户端程序里信任所有证书。但这样做无法避免中间人攻击。若调用方也为服务器时,更安全的做法是在调用方导入HTTPS证书。下面介绍如何在JDK中导入CA证书。

导入CA根证书

需注意待导入的证书的CN(Common Name)与你的服务器域名或IP应相同。参考另一篇文章在下面的例子中,JDK安装目录为/usr/lib/jvm/jdk8/,如果你的JDK安装在其它目录,你需要相应调整。

  • 首先使用下面的命令查看当前JDK中已安装的证书,如果提示需要密码,输入changeit
    keytool -list -keystore /usr/lib/jvm/jdk8/jre/lib/security/cacerts
    # 或Openjdk 11
    keytool -list -keystore /usr/lib/jvm/java-11-openjdk/lib/security/cacerts
    
  • 导入CA根证书:
    cd /usr/lib/jvm/jdk8/jre/lib/security
    keytool -keystore cacerts -importcert -alias YOUR_CA_ALIAS -file ca.crt
    
  • 导入成功后,你就可以在Java里正常访问自生成的SSL证书了。

参考

Comment