java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

WebService调用Https接口报错:

Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

试过将证书加入Jdk的cacerts,也试过通过InstallCert.java生成jssecacerts都 没有成功!

以下是我成功的方式:

先将https证书拿下来:

这里以导入Maven 中央库的证书为例,使用Chrome下载证书。

在浏览器输入Maven 中央库地址: https://repo.maven.apache.org/maven2/

点击地址栏 左侧的小锁按钮,在弹出的下拉单中选择 “连接时安全的” 菜单,如下图:

在这里插入图片描述

 

点击 “证书有效“

在这里插入图片描述
在弹出窗口中进入 ”详细信息“的标签页, 点击下方的“导出”按钮后, 选择一个本地的下载路径之后进行下载, 这里下载到 C盘的cert 目录, 证书文件名是:mvnrepo.crt

在这里插入图片描述 

  1. 到jdk的security文件夹下(我的位置:D:\Program Files\Java\jdk1.7.0_71\jre\lib\security)
  2. 输入cmd进入命令行
  3. 输入命令
    keytool -import -alias trustCacerts -file D:\mvnrepo.crt -keystore keystore.jks

    PS:
         trustCacerts是起的别名,通过alias指定
         D:\mvnrepo.crt是https证书的位置,通过-file指定
         -keystore.jks是秘钥库文件,通过-keystore指定
    .jks文件是Java密钥库文件的一种类型,它用于存储密钥和证书,以便在Java应用程序中进行安全通信。这些文件通常用于SSL/TLS协议中的服务器端和客户端身份验证,以及数字签名和加密等操作

  4. 执行上面的命令后需要输入秘钥,jdk秘钥默认是:changeit

     

  5. 输入命令:可以看到已添加的秘钥

    keytool -list -keystore keystore.jks

     

  6. 在java代码调用https接口前写以下代码:

    System.setProperty("javax.net.ssl.trustStore", "C://Program Files//Java//jdk1.7.0_55//jre//lib//security//keystore.jks"); //key路径(jks存放地址)
    System.setProperty("javax.net.ssl.trustStorePassword","changeit");//密码 
    System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol"); 
    java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); 

    指定信任的证书位置即可

        

参考链接:Java如何安装https证书_jdk导入https证书_oscar999的博客-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值