当前位置:首页 > 开发 > 编程语言 > .NET > 正文

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

发表于: 2015-07-15   作者:bewithme   来源:转载   浏览:
摘要:      如果你构建了一个https协议的站点,而此站点的安全证书并不是合法的第三方证书颁发机构所签发,那么你用httpclient去访问此站点会报如下错误   javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path bu

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

         mac os 终端进入 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/security


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

 
 

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

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
在上篇文章《HttpClient配置ssl实现https简单示例——绕过证书验证》中简单分享了一下如何绕过证书
不是每个公司都会以数百美金一年的代价向CA购买SSL证书。在企业应用中,付费的SSL证书经常被自签名
客户端如何使用httpclient向https服务器发送数据( unable to find valid certification path to re
1.首先你要去打开一个https: ///www.xxx.com的网站 导出一个steven.cer的证书文件 2. 3. public sta
最近项目中需要增加天气预报功能,网上给的资料有很多缺陷比如 1. 有些小网站提供的webservers本身
出于公司内部访问考虑,采用的CA是本机Openssl自签名生成的,因此无法通过互联网工信Root CA验证,
1、创建自签名的可信任域名证书 下载SelfSSL.exe:http://cid-3c8d41bb553e84f5.skydrive.live.com/
最近项目涉及到的web-service接口,是https的,所以开发部署完实现个demo测试。但是在写demo的时候
Azure作为微软的公有云平台,提供了非常丰富的SDK和API让开发人员可以非常方便的调用的各项服务,目
本教程以AppServ生成自签名证书为例,同时配置OpenSSL环境 1.生成自签名证书,控制台程序进入Apache
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号