首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"PKIX路径构建失败“,尽管有效的Verisign证书

"PKIX路径构建失败“,尽管有效的Verisign证书
EN

Stack Overflow用户
提问于 2013-04-16 23:54:29
回答 3查看 1.4K关注 0票数 0

我遇到了类似的问题,如下所述:

The Webserver I talk to updated its SSL cert and now my app can't talk to it

尽管具有有效的Verisign证书,但仍出现"PKIX路径构建失败“异常。

我不明白的是,为什么当我在web浏览器中点击相同的URL时,服务器工作得很好。

服务器正在发送整个证书链,我可以在我的web浏览器中看到它:

代码语言:javascript
复制
   (Verisign root)
     -> (VeriSign Class 3 Secure Server CA - G3) 
       -> (my server) 

但是由于某些原因,Java和OpenSSL命令行工具没有看到它。

wget失败,openssl s_connect只能看到中间的"G3“证书。

然而IE和Chrome --没有问题。

这里发生了什么事?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-17 01:19:42

您在浏览器中看到的不一定是服务器发送的链,而是由浏览器重新构建的链。Windows有可能将G3中间CA作为信任锚,而其他客户端则没有。

要检查服务器发送的实际链,请结合使用-showcertss_connect

代码语言:javascript
复制
openssl s_client -showcerts -connect your.host.name:443

确保以正确的顺序发送链:如果需要,首先发送服务器证书,然后发送中间证书。

代码语言:javascript
复制
Certificate chain
 0 s:/.../CN=your.host.name
   i:/.../CN=VeriSign Class 3 Secure Server CA - G3
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
 1 s:/.../CN=VeriSign Class 3 Secure Server CA - G3
   i:/.../CN=Verisign root
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

(以防万一,请检查您是否获得了正确的证书,以防您使用的是SNI,但使用的是不支持它的Java或OpenSSL版本。)

检查这一点的一个好工具是Qualys SSL labs test

此外,根据wgetopenssl的安装方式,它们通常没有受信任锚点的默认列表,因此您必须显式地为它们提供指向CA证书捆绑包的路径。

票数 2
EN

Stack Overflow用户

发布于 2013-04-16 23:56:40

Javaopenssl似乎不信任G3

票数 0
EN

Stack Overflow用户

发布于 2013-04-17 00:19:05

这可能是因为根证书必须驻留在本地(客户端)才能被信任。如果有问题的verisign根证书在本地不受信任,那么它是否包含在服务器发送的链中并不重要-它不受客户端的信任。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16041602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档