【发布时间】:2016-06-21 04:42:08
【问题描述】:
我不认为这与this one 之类的问题重复,因为证书是由 java 识别的。
出于测试目的,我生成了自己的根 CA 和这样的证书:
自己的根 CA -> 中间 CA -> 我的证书
我用它创建了一个密钥库,并成功地在我的 java 服务器中使用该密钥库来提供加密内容(在 Eclipse 应用程序中使用 Jetty)。我可以使用 SSL 和 Firefox(添加中间 CA 之后)调用我的 rest-api,一切正常。
但是,我不能从另一个 Java 应用程序(使用 javax.ws.rs)调用我的 Rest-API,因为证书链似乎是错误的。
javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
如果我检查异常详细信息,我可以看到,SunCertPathBuilderException 包含我的 Client-Certificate 和 Intermediate CA-Certificate,但不包含 Root-CA-Certificate(在字段 adjList 中)。
为什么应用程序找不到根 CA?我想这就是问题所在,但 Root-CA 在密钥库中,我为服务器使用相同的密钥库,所以我知道它应该是正确的。
【问题讨论】: