`
bewithme
  • 浏览: 422960 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

 
阅读更多

     先检查java环境变量

 

  

    JAVA_HOME

    JRE_HOME

    Path加上 %JAVA_HOME%\bin;%JRE_HOME%\bin

 

 

 

      如果你构建了一个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\bin 目录

  
        敲入如下命令回车执行
        keytool -import -alias cacerts -keystore  C:\Program Files\Java\jdk1.5.0_06\jre\lib\security\cacerts -file C:\NEXT_CertKey.cer -trustcacerts
        此时命令行会提示你输入cacerts证书库密码,
        java中cacerts证书库默认密码为changeit,
        Y确认即可,OK,认证已添加至keystore。

 
keytool -delete -alias changanfordclub -keystore cacerts  -storepass changeit
 
 mac os 终端进入 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/security

 

sudo keytool -import -alias cacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/security/cacerts -file /Users/xuwenfeng/Desktop/RuckusWirelessZoneDirectorSN-491508001359 -trustcacerts

如果您觉得我的文章给了您帮助,请为我买一杯饮料吧!以下是我的支付宝,意思一下我将非常感激!
 
0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics