我用Java程序(使用HttpUrlConnection)发送http请求到网站,并从那里下载文件。
该网站是"https“,并使用证书。
当我尝试运行我的代码时,它会发生异常:
cause 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
我试着用我的浏览器(Mozilla).And去这个网站当我检查证书时,有三个certificates.The站点包含这些证书。
DigiCert高保障EV根CA
-DigiCert高保障CA-3
-thecompanycert (由DigiCert高保障CA-3颁发)
我用keytool检查我的trustsroe。信任库只有根CA。这足够了吗?或者我必须导入另外两个证书?还是只有-thecompanycert?
向java信任库添加中间证书的风险是什么?我必须这么做吗?
有人能帮上忙吗?
发布于 2015-10-27 01:49:02
如果服务器配置正确,它应该发送站点证书以及构建信任链所需的任何/所有中间证书。您要连接的站点似乎没有发送中间证书。
如果您是站点管理员,您可以纠正这个错误,这样就不必在Java客户端信任存储上胡乱摆弄。
如果您是最终用户,则可以将中间证书添加到Java信任存储区。您不需要添加站点证书。但是,一定要联系网站所有者,并要求他们更正此错误。
几天前我发了一个similar answer。
发布于 2016-03-02 01:03:26
假设CA和中间CA已经存在于最近Java版本的默认信任存储中,您不应该需要导入它们,除非您使用的是较早的Java版本。在任何情况下,这都取决于您对CA的信任程度,但Java和大多数浏览器已经信任它。
https://stackoverflow.com/questions/33351978
复制相似问题