[英]Adding certificate to Java truststore and Sslhandshake
我使用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)转到该网站。当我检查证书时,共有三个证书。该站点包含这些证书。
DigiCert高保证EV根CA
-DigiCert高保证CA-3
-thecompanycert(由DigiCert High Assurance CA-3发行)
我用keytool检查我的信任。 信任库仅具有根CA。 够了还是我必须导入其他两个证书? 或仅-companycert?
向Java truststore中添加中间证书有什么风险? 我必须这样做吗?
有人可以帮忙吗?
如果服务器配置正确,则应将站点证书以及构建信任链所需的任何/所有中间证书一起发送。 您似乎要连接到的站点没有发送中间证书。
如果您是站点管理员,则可以更正此问题,而无需弄乱Java客户端信任库。
如果您是最终用户,则可以将中间证书添加到Java信任库中。 您不需要添加站点证书。 但是,请务必与网站所有者联系,并要求他们进行更正。
我几天前也发布了类似的答案 。
鉴于CA和中间CA已经存在于最新Java版本的默认信任库中,因此除非您使用的是较旧的Java版本,否则无需导入它们。 无论如何,这取决于您对CA的信任程度,但是Java和大多数浏览器已经信任它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.