解决httpclient访问自签名https报javax.net.ssl.SSLHandshakeException: sun.security.validat

当使用httpclient访问使用自签名HTTPS证书的网站时,会遇到SSLHandshakeException错误。这是因为JDK默认不信任该站点的证书。解决方法是手动将站点证书导入Java的信任证书库。在Windows或Mac OS上,需以管理员身份运行命令行,并使用keytool工具将证书导入 cacerts 文件,输入默认密码changeit,从而更新信任证书。
摘要由CSDN通过智能技术生成

 如果你构建了一个https协议的站点,而此站点的安全证书并不是合法的第三方证书颁发机构所签发,那么你用httpclient去访问此站点会报如下错误

 

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

 

产生原因是jdk的证书库里并没有将该站点的证书作为受信任的安全证书。

 

解决方法是导该站点的证书,将此证书导入到java的信任证书库中。

 

要注意的是,在win7或更高的系统中,运行一定要以管理员身份运行CMD,Mac os 要用sudo -i 命令切换为 root用户,否则会报以下错

keytool错误: java.io.FileNotFoundException: 

 

把证书导入java的cacerts证书库的步骤:

第一步:IE打开网站,把要导入java证书库的证书下载
        在该网页安全警报弹出窗口上查看证书--详细信息--复制到文件
        会弹出一个证书导出向导对话框,按提示一直下一步直到完成。
        我把证书保存在C盘,名字为NEXT_CertKey.cer 或是 xxxx.der。

第二步:将上面导出的证书导入java中的cacerts证书库
        windows  cmd进入C:\Program Files\Java\jdk1.5.0_06\jre\li

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shaun-sheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值