java证书存放位置_Java中的证书路径发现

我尝试通过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点)

那么验证必须成功通过错什么了吗p>

我在某处读到了这个:

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

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

* 更新

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

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

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

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

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

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

解决方案可以是:

服务器返回整个证书链

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

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92440 人正在系统学习中 相关资源:MinionProfitsTracker:随着市场价格波动,轻松识别最赚钱的奴才[在…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月22日
下一篇 2021年1月22日

相关推荐