Can';由于缺少证书,无法从java访问blockchain.info

Can';由于缺少证书,无法从java访问blockchain.info,java,security,ssl,ssl-certificate,Java,Security,Ssl,Ssl Certificate,我正在尝试从java访问, 但是代码抛出: 原因:sun.security.provider.certpath.SunCertPathBuilderException:找不到请求目标的有效证书路径 这通常是由于自签名证书,但此证书不是自签名的(您可以在浏览器中检查)。看起来java没有用户系统CA证书。 这不是一只虫子吗? 我导出了证书并将其动态插入java密钥库,但我不喜欢这个解决方案(不确定它是否会检查此证书的吊销列表等)。 那么,解决问题的最佳解决方案是什么 我用这段代码测试了信任根列表的

我正在尝试从java访问, 但是代码抛出:
原因:sun.security.provider.certpath.SunCertPathBuilderException:找不到请求目标的有效证书路径

这通常是由于自签名证书,但此证书不是自签名的(您可以在浏览器中检查)。看起来java没有用户系统CA证书。 这不是一只虫子吗? 我导出了证书并将其动态插入java密钥库,但我不喜欢这个解决方案(不确定它是否会检查此证书的吊销列表等)。 那么,解决问题的最佳解决方案是什么


我用这段代码测试了信任根列表的变化,Java内置的信任根列表通常与浏览器的信任根列表略有不同。这些信任根存储在系统密钥库中(从技术上讲是存储在系统信任库中),您可以通过将要支持的额外根放在存储在主目录中的每个用户密钥库中来添加这些信任根。它位于使用
keytool
操作的默认位置


你实际上认为放在那里的证书——如果它还没有的话——将是“科摩多认证机构”;浏览器喜欢它(即,您可以独立于Java验证它),但您的Java不喜欢。它有直接签署到它的revokation信息,所以它应该是所有你需要的;SSL/PKI应该只能够从根CA证书引导。

在您提问之前,我完全不知道为什么您的Java版本默认不支持该根CA。你的补丁是最新的吗?CA列表是变化最频繁的事情之一。是的。在同一问题上尝试了1.7_51和1.8_b126。COMODO证书不在java证书列表中。我认为它应该使用OSX默认密钥链(看起来它加载了苹果的java.security.Provider),但是。。。