Java https连接的”unable to find valid certification path to requested target”,”PKIX path building failed”错误

问题原因

这个问题的是由于Java自带的根证书库中不包含HTTPS服务器上的根证书,因此无法得到认证。

解决方案

比较容易实现的方案有两种:

  1. 导入服务器证书到本地Java环境
  2. 代码中忽略证书信任问题

由于第二种方案会导致安全性问题,因此并不推荐。

证书导入注意事项

将服务器的根证书导入到Java运行环境的根证书库中,能解决对应的服务器https连接问题。

实现方式是使用$JAVA_HOME/jre/bin下的keytool工具将服务器端的证书添加到jre/lib/security/cacerts文件中。
需要注意的是:

  1. 确定当前Java程序所用的java运行环境jre的路径(可能为jdk下的jre,也可能是单独的jre)。
  2. 确定有jre/lib/security/cacerts文件的写入权限(可以用管理员权限运行keytool)。

详细步骤:

1. 获取服务器端的证书文件

可以使用浏览器打开服务器网站页面,然后导出证书文件,假设导出的证书文件为test.crt 。

2. 生成keystore文件

利用keytool生成密钥文件keystore:

keytool -importcert -noprompt -trustcacerts -alias test -file test.cer -keystore ~/mykeystore

这里会要求设置口令,设置后请记住口令 。

3. 导入证书到Java运行时环境

将证书导入jre/lib/security/cacerts:

keytool -importkeystore -srckeystore ~/keystore -destkeystore [path_to_jre]/lib/security/cacerts

会要求输入目标密钥库口令(也就是jre/lib/security/cacerts 的口令,默认是changeit或者changeme),以及源密钥库口令(之前设置的口令).

最后会显示是否导入成功。如果成功则重启Java程序。

Java https服务器证书认证问题解决方案相关推荐

  1. java实现https免证书认证

    java实现https免证书认证 解决方法: 1.下载两个包,httpclient-4.2.jar和httpcore-4.2.jar,复制以下代码就可使用. 2.调用类代码: String httpO ...

  2. 微信支付HTTPS服务器证书验证(PHP)

    PHP代码验证是否包含CA证书 如果无法通过验证,请点击连接查看官方操作,安装相应的ca证书即可 # test_wechat_ca.php <?php $data = array('mch_id ...

  3. 转载:Openssl生成rsa和椭圆曲线加密公钥密钥创建根ca签名https服务器证书签名...

    转载:Openssl生成rsa和椭圆曲线加密公钥密钥创建根ca签名https服务器证书签名 Openssl生成rsa和椭圆曲线加密公钥密钥创建根ca签名https服务器证书签名 July 20, 20 ...

  4. 北京数字认证股份有限公司-数字证书认证管理解决方案

     数字证书认证管理解决方案 refurl:http://www.bjca.org.cn/solutions/zsszzsgl 一.方案背景 加强以密码技术为基础的信息保护和网络信任体系,规范和加强 ...

  5. java https 验证客户端证书_Java HTTPS客户端证书认证

    小编典典 终于设法解决了所有问题,所以我会回答我自己的问题.这些是我用来解决特定问题的设置/文件: 该客户端的密钥库是一个PKCS#12格式文件包含 客户端的公共证书(在这种情况下,由自签名CA签名) ...

  6. OpenSSL创建HTTPS的证书认证

    一.HTTPS的证书 HTTPS是HTTP+TLS结合的产物. HTTPS利用TLS可以完成: ①身份认证(防止冒充身份) ②加密数据(防止监听到数据) ③保证信息的完整性(防止信息的篡改) 而HTT ...

  7. Tomcat7 配置Https双向证书认证

    下午闲来无事,发现了yale 的cas,继而发现要用到tomcat的https,通过网上找的资料和自己实践所的,写下此篇文章以留记录查看 第一步:为服务器生成证书  win+r 输入cmd进入控制台, ...

  8. https及证书认证

    一.HTTPS通讯原理 Https是基于安全目的的Http通道,其安全基础由SSL层来保证. 最初由Netscape公司研发,主要提供了通讯双方的身份认证和加密通信方法. 二.SSL协议通信过程 1. ...

  9. java https请求 证书_java发https请求,证书配置

    配证书: Getting   Tomcat   SSL   (https)   Working 1.Create   a   certificate   keystore   containing   ...

最新文章

  1. python完全新手教程-Python完全新手教程
  2. mysql的瓶颈_MySQL瓶颈分析与优化
  3. mysql 学生成绩等级_JSP+SSM+Mysql实现的学生成绩管理系统
  4. 2021湖北高考成绩查询热线,湖北招生考试网:2021年湖北高考成绩查询入口、查分系统...
  5. jquery 页面自动滚动到顶部
  6. 从JUnit4迁移到JUnit5:重要的区别和好处
  7. 80后的我,记忆里和吃有关的那些事
  8. swift [Application] The app delegate must implement the window property if it wants to use a main 报错
  9. 搭建云服务器简单流程【华为云服务器】
  10. 这些微信头像,你敢换吗?
  11. “智多星”智能手机销售网后台管理系统设计
  12. 如何清除(登录)缓存
  13. 2020有道翻译 使用付费api
  14. html手抄报怎么制作软件,电子手抄报制作软件
  15. element-table表格分页多选
  16. VSTO 部署安装的两种方法
  17. android 闹钟不响,为什么我写的Android闹钟到时间时却不会响
  18. Markdown图片居中、文字居中
  19. 2021-12-3 温故而知新-JavaScript隐式转换
  20. 【论文】Believe It or Not, We Know What You Are Looking at! 阅读笔记

热门文章

  1. GLC - 实现 glog 日志清理
  2. henauOJ1057(走向人生巅峰)
  3. 一元线性回归利用最小二乘法求解原理代码及案例
  4. JS--JavaScript焦点处理(获取焦点focus、失去焦点blur)
  5. 统计各个部门员工薪水总和 Hadoop
  6. 静态服务器--动态页面 (python)
  7. 腾讯云联合微信推出云开发 2.0 平台,低代码“微搭”升级
  8. vivo2020届春季校园招聘在线编程考试--[编程题]vivo智能手机产能
  9. 知识付费平台有几种?现在怎么运作的?
  10. 怀化职业技术学院计算机,怀化职业技术学院计算机网络技术专业人才培养方案.doc...