SSL认证失败:

  • 报错信息如下:
sun.security.validator.ValidatorException:  PKIX path building failed:  sun.security.provider.certpath.SunCertPathBuilderException:  unable to find valid certification path to requested target
  • 问题发现环境:
    Java中使用了 HttpsURLConnection 去请求某资源,报此错误。
  • 错误原因:
    Java在访问SSL加密的网站时,需要从JDK的KeyStore 里面去查找相对应得可信证书,如果不能从默认或者指定的KeyStore 中找到可信证书,就会报这个错误。
    另外,Java所使用的证书仓库并不是Windows系统自带的证书管理。所以即使系统中包含此证书也不可以使用。

解决这个问题的办法有两种:
一是在发起https连接之前将服务器证书加到httpclient的信任证书列表中,这个相对来说比较复杂一些,很容易出错。
另一种办法是让httpclient信任所有的服务器证书,这种办法相对来说简单很多,但安全性则差一些,但在某些场合下有一定的应用场景。

  • 解决方式1:将所访问的SSL站点证书添加至JVM。
    echo -n |openssl s_client -connect 182.242.198.40:5000|sed -ne'/BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > xxxxx.cert
    此命令获取服务端证书链。
    keytool -importcert -alias 182.242.198.40-1 -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -file xxxxx.cert
    此命令导入上述证书到JVM的证书库中。
    如果JAVA_HOME环境变量未设置,需要预先设置。 如:update-alternatives --list
    可以看到当前jdk的安装目录。如/usr/lib/java/jdk1.8.0_131
    则可以通过export JAVA_HOME=/usr/lib/java/jdk1.8.0_131来指定JAVA_HOME。
  • 解决方式2:忽略SSL认证。
    自定义javax.net.ssl.X509TrustManager实现类,在认证时直接忽略。
X509TrustManager x509m = new X509TrustManager() {//返回受信任的X509证书数组。@Overridepublic X509Certificate[] getAcceptedIssuers() {return null;}//该方法检查服务器的证书,若不信任该证书同样抛出异常。通过自己实现该方法,可以使之信任我们指定的任何证书。//在实现该方法时,也可以简单的不做任何处理,即一个空的函数体,由于不会抛出异常,它就会信任任何证书。@Overridepublic void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {}//该方法检查客户端的证书,若不信任该证书则抛出异常。由于我们不需要对客户端进行认证,//因此我们只需要执行默认的信任管理器的这个方法。JSSE中,默认的信任管理器类为TrustManager。@Overridepublic void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}
}

使用时:


HttpsURLConnection httpsConn = (HttpsURLConnection) realUrl.openConnection();
//Hostname认证直接通过
httpsConn.setHostnameVerifier(new HostnameVerifier() {public boolean verify(String hostname, SSLSession session) {return true;}
});
//ssl认证,UnTrustManager中的SSLContext设置了X509TrustManager的重写对象
httpsConn.setSSLSocketFactory(UnTrustManager.getSSLContext().getSocketFactory());

Https请求报错:unable to find valid certification path to requested target相关推荐

  1. jenkins设置清华镜像时报错 unable to find valid certification path to requested target

    jenkins在设置清华镜像时,会报找不到证书的错,具体报错内容: 检查更新中心: SSLHandshakeException: sun.security.validator.ValidatorExc ...

  2. 【已解决】Https请求报错:unable to find valid certification path to requested target

    SSL认证失败: 报错信息如下: sun.security.validator.ValidatorException: PKIX path building failed: sun.security. ...

  3. HttpClient发送Https请求报 : unable to find valid certification path to requested target

    一.场景   近期在对接第三方接口时,通过HttpClient发送Https请求报 : unable to find valid certification path to requested tar ...

  4. IDEA运行报Command line is too long和unable to find valid certification path to requested target

    IDEA解决 Maven:unable to find valid certification path to requested target 一.报错信息: Could not transfer ...

  5. Spring Boot项目中使用RestTemplate调用https接口出现 unable to find valid certification path to requested target

    问题描述:Spring Boot项目中使用RestTemplate调用https接口出现以下错误: PKIX path building failed: sun.security.provider.c ...

  6. 解决PKIX:unable to find valid certification path to requested target 的问题

    注意:本文出自"阿飞"的博客 ,如果要转载本文章,请与作者联系! 并注明来源: http://blog.csdn.net/faye0412/article/details/6883 ...

  7. JAVA 证书信任 :unable to find valid certification path to requested target

    最近使用 gradle 配置阿里云的maven代理仓库:https://maven.aliyun.com/repository/public 构建的时候遇到:unable to find valid ...

  8. JAVA 解决 unable to find valid certification path to requested target 证书认证

    JAVA 解决 unable to find valid certification path to requested target 证书认证 下载证书 导入证书 更新证书 其他命令 下载证书 点击 ...

  9. 【SSL】调用HTTPS://服务遇到错误:unable to find valid certification path to requested target

    前言 OkHttpClient 最近有个需求,需要调用一个https开头的URL服务. 服务方提供了一个demo,但,demo是调用http的服务. 网上找了一大圈,发现盖起来要这样要那样的.都不符合 ...

最新文章

  1. 浅谈机器学习在市场营销中的应用
  2. Oracle 定义变量的方法
  3. [agc016e]poor turkeys
  4. C# 5.0 CallerMemberName CallerFilePath CallerLineNumber 在.NET4中的使用
  5. Kylin下构建Cube第一步出错:shell-init: error retrieving current directory
  6. 政府网络安全意识提升 中小企业客户却有待培育
  7. 聊聊Election Algorithms
  8. activiti 定时任务和线程池
  9. 怎样设置计算机默认字体及语言,电脑win10系统怎么将paint 3D的语言设置为中文...
  10. 英文期刊论文翻译格式要求和文献要求
  11. python学习手册四版中文_Python学习手册(第4版) 中文版.pdf 全文免费
  12. java高级类_Java私塾跟我学系列——JAVA篇 第五章 Java高级类特性
  13. 拼多多签名认证Sign
  14. 量化交易之设计模式篇 - 中介者模式
  15. shiro集成jwt
  16. 共模信号 差模信号 差动放大器
  17. agc013e Placing Squares(模型转化+dp+矩阵优化)
  18. 邓白氏编码官方查询地址
  19. C++ 三维空间的点(继承)
  20. 设备配网专题《原理分析,设备配网技术之AP配网》

热门文章

  1. 四台主机模拟实现静态路由
  2. Linux网络编程7——epoll反应堆模型
  3. 智能语音技术:从哪儿来?往何处去?
  4. 这个大表走索引字段查询的 SQL 怎么就成全扫描了,我TM人傻了
  5. BZOJ 2407: 探险/BZOJ 4398: 福慧双修 dijkstra 构造
  6. 免杀方法(一)mimikazta
  7. OSChina 周四乱弹 —— 熊孩子以及它们的无良母亲
  8. 刘营 计算机应用研究,计算机应用研究
  9. 计算机组成原理XXH是什么,计算机组成原理第二次实验报告.doc
  10. 气象学需要计算机知识吗,应用气象学专业学什么