我尝试通过Java内置功能为此(HttpURLConnection)建立一个https连接。但是我得到这个异常:

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

at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)

...

...

我的证书链是:

Root certificate -> Intermediate certificate -> Web server certificate

所使用的证书通过“路径发现”的含义是正确的。信任锚是根证书,该根证书导入到我系统上的Java密钥库中。中间证书不是…但是

中间证书由我信任的根签名-因此,我也信任中间证书。

Web服务器证书已使用我信任的中间证书签名(第1点)

那么验证必须成功通过?我做错什么了吗?

我在某处读到了这个:

浏览器可以执行自动发现,而服务器到服务器则不能。

但是缺少此功能是非常基本的。是否有进行自动发现的明确方法?

* 更新

是的,这就是问题,GPI。我很困惑,因为浏览器可以验证服务器证书,但是Java应用程序不能。该行为的原因是:

服务器仅发送最终证书,而不发送整个证书链;

该证书是最近购买的,并使用相对较新的中间证书进行了签名;

浏览器具有相对最新的证书列表,包括中间证书;

Java具有相对最新的证书列表,并且中间没有证书。

浏览器通过中间证书验证最终证书Java无法检查证书链,因为:1.链未发送;2.最终证书的签署者(中间证书)不是信任锚。

解决方案可以是:

服务器返回整个证书链

要在Java信任库中添加的中间证书

java证书存放位置_Java中的证书路径发现相关推荐

  1. java 验证码透明背景_Java中的证书透明度验证

    java 验证码透明背景 因此,我有一个幼稚的想法,即除了证书有效性检查(在Java中)之外,将证书透明性验证作为每个请求的一部分也很容易. 牺牲了整个周末的一半时间,我可以证明这并不是一件小事. 但 ...

  2. java变量存储位置_java 中变量存储位置的区别

    [原文] 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量 ...

  3. ansible 建 kubernetes 证书签名请求_Java中的微信支付(2):API V3 微信平台证书的获取与刷新...

    1. 前言 在Java 中的微信支付(1):API V3 版本签名详解一文中胖哥讲解了微信支付 V3 版本 API 的签名,当我方(你自己的服务器)请求微信支付服务器时需要根据我方的API 证书对参数 ...

  4. java对数字证书的验证_JAVA对数字证书的常用操作

    一:需要包含的包 import java.security.*; import java.io.*; import java.util.*; import java.security.*; impor ...

  5. java string 对象地址_Java中String对象的存储位置(学习笔记)

    packagetest.string.equal;public classMain {/*** 创建了三个对象,"helloworld对象创建在常量池中",每次new String ...

  6. hashset java 键值对_Java中的各个容器的性能对比

    java中个个容器的属性,性能,参数对比: Java容器的性能及属性的对比 List:Vector,ArrayList,LinkedList Vector:内部是数组数据结构,可以理解为加锁的Arra ...

  7. java static调用吗_Java中的static的使用

    1.Java 中被static修饰的成员称为静态成员或类成员.它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享.且优先于对象存在.静态成员可以使用类名直接访问,也可以使用对象名进行访问.使 ...

  8. java取模负数_JAVA中取模的问题

    ## Java取模(%)运算 > [上篇文章](https://yebukong.com/article/1101070795486109697.html "上篇文章") 提 ...

  9. java中有没有栈_Java中堆和栈有什么区别

    stack 和 heep 都是内存的一部分stack 空间小,速度比较快, 用来放对象的引用heep 大,一般所有创建的对象都放在这里.栈(stack):是一个先进后出的数据结构,通常用于保存方法(函 ...

最新文章

  1. 5月23日 JavaScript
  2. 新获融资1亿,聚焦全栈,云知声背后的AI下半场
  3. gx works怎么写入from指令_FANUC PMC 指令和应用
  4. 思卡乐科技发布SR3系列RFID产品
  5. HPE公司升级其闪存存储产品系列
  6. spark的三大数据结构
  7. matlab2c使用c++实现matlab函数系列教程-repmat函数
  8. 从turtlesim到贪吃蛇……
  9. 小游戏上传分数是怎么实现的_如何利用微信小游戏做公众号吸粉营销活动
  10. 一位浙大教授令人寒心的演讲,说出了真话!
  11. core dumped 错误
  12. c语言极限方法求e方法,极限值确定函数式中参数的求解方法.pdf
  13. USB虚拟总线驱动开发扩展之(利用虚拟USB总线驱动实现U盘模拟)
  14. 高德地图定位失败_高德开放平台
  15. android文件恢复功能,安卓手机恢复删除文件,如何恢复
  16. 【ElasticSearch】ELK statck
  17. 辽河十八汊最牛X男爷们
  18. 矫形鞋的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  19. 轻量级Kubernetes之k3s:2:使用docker作为容器运行环境
  20. 【蓝桥杯选拔赛真题02】Scratch守护之盾 少儿编程scratch蓝桥杯选拔赛真题讲解

热门文章

  1. mybatis中解决属性名和字段名不一致的方法
  2. 什么是算法c语言中,C语言/C++算法基本概念
  3. mousewheel 取消_jquery mousewheel:检测车轮何时停止?
  4. java响应鼠标滚轮事件_鼠标滚轮事件MouseWheel
  5. preempt_count分析
  6. LeetCode刷题笔记(算法思想 四)
  7. 分析虚拟机、容器和沙箱之间的神秘关系
  8. Excel技能之8种查找,乍看感觉有点懵
  9. 自己的下拉框可以编辑的
  10. 李开复: 算法的力量