我尝试通过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. 无法访问http,会强制跳到https
  2. 使用SAX解析XML文件
  3. Kotlin中?和!!的区别
  4. Android隐藏标题栏,全屏显示
  5. java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion
  6. STM32+华为云IoTDA,带你设计一个属于自己的动态密码锁
  7. Python输出当前时间
  8. 企业实战(2) 项目环境搭建之Tomcat部署
  9. java疯狂讲义笔记整理(第二版第一部分)
  10. hdu 2844 Coins (多重背包+二进制优化)
  11. 例4.7 素数 - 九度教程第51题(素数筛法)
  12. 解决Iframe嵌入帆软BI系统后,Chrome升级后跨域出现登录界面,Cookie写入不成功。解决办法
  13. 计算机重装操作系统的软件,重装系统后的装机必备软件电脑推荐
  14. 文献阅读—A detection algorithm for cherry fruits based on the improved YOLO-v4 model
  15. 如何将 elasticsearch 版本从 openshift-logging 4.2.36 降级到 v4.2.29
  16. Win系统 - WIN10 更新后蓝牙音箱无法连接成 Stereo 模式(立体声)
  17. React: onRef 和 ref
  18. 6.4 深度负反馈放大电路放大倍数的分析
  19. android 高通分区表,高通msm8994平台的NV到底是储存在哪个分区?
  20. 总结DES、3DES、AES、SM加密算法

热门文章

  1. 程序员最喜欢说的几句口头禅!一张嘴就知道你是青铜还是王者!
  2. Android开发 8.0及以上调用相机/相册,并根据Uri获取图像绝对路径,并进行文件上传
  3. 直播系统开发:直播行业进入多元化的发展方向
  4. 统计学习方法 | K 近邻法
  5. 制作一个简易的ATM取款机
  6. 自己收藏的高德地图批量标点获取坐标工具
  7. Java/1 - 7章
  8. android textview ellipsize汉字数字混合,Android TextView属性ellipsize多行失效的解决思路...
  9. 网络安全再成央视3·15主角,安全手机变身“香饽
  10. Android插件化