将证书添加到Java信任库和Sslhandshake

时间:2015-10-26 17:32:09

标签: java http ssl https certificate

我将带有Java程序的http请求(使用HttpUrlConnection)发送到网站并从那里下载文件。

该网站为“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)访问此网站。当我检查证书时,有三个证书。网站包含这些证书。

DigiCert High Assurance EV Root CA

-DigiCert High Assurance CA-3

-thecompanycert(由DigiCert High Assurance CA-3发布)

我用keytool检查我的trustsroe。信任库仅具有根CA. 是否足够或我必须导入另外2个证书?或者只是 - thecompanycert?

将中间证书添加到java信任库有什么风险? 我必须这样做吗?

任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

如果服务器配置正确,它应该发送站点证书以及构建信任链所需的任何/所有中间证书。您连接的网站似乎没有发送中间证书。

如果您是网站管理员,则可以更正此问题,而且您不必使用Java客户端信任存储区。

如果您是最终用户,则可以将中间证书添加到Java信任库。您不需要添加站点证书。但是,请与网站所有者联系并请求他们更正此内容。

我几天前发布了similar answer

答案 1 :(得分:0)

鉴于CA和中间CA已存在于最近Java版本的默认信任库中,除非您使用较旧的Java版本,否则不应导入它们。在任何情况下,它取决于您对CA的信任程度,但Java和大多数浏览器已经信任它。