我有一个 Java 客户端尝试使用自签名证书访问服务器。
当我尝试发布到服务器时,我收到以下错误:
无法找到到所请求目标的有效认证路径
在对这个问题进行了一些研究之后,我做了以下工作。
将我的服务器域名保存为
root.cer
文件。在我的 Glassfish 服务器的 JRE 中,我运行了这个:
keytool -import -alias example -keystore cacerts -file root.cer
- 要检查证书是否已成功添加到我的 cacert,我这样做了:
keytool -list -v -keystore cacerts
我可以看到证书存在。
- 然后我重新启动 Glassfish 并重试了“帖子”。
我仍然遇到同样的错误。
我有一种感觉,这是因为我的 Glassfish 实际上并没有读取我修改过的 cacert
文件,但可能是其他文件。
你们有没有人遇到过这个问题,可以把我推向正确的方向?
原文由 TheCoder 发布,翻译遵循 CC BY-SA 4.0 许可协议
不幸的是——它可能是很多东西——很多应用服务器和其他java“包装器”很容易玩弄属性和他们“自己”的钥匙串等等。所以它可能正在寻找完全不同的东西。
缺少 truss-ing - 我会尝试:
看看是否有帮助。除了“全部”,还可以将其设置为“ssl”、密钥管理器和信任管理器——这可能对您的情况有所帮助。将其设置为“帮助”将在大多数平台上列出如下内容。
无论如何 - 请确保您完全了解密钥库(您拥有用于证明自己身份的私钥和证书)和信任库(确定您信任的人)之间的区别 - 以及您自己的身份也对根有一个“信任链”——它与任何指向根的链是分开的,你需要弄清楚你信任的“谁”。
来源:#见 http://download.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#Debug