首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有SHA-2签名证书的SunCertPathBuilderException

具有SHA-2签名证书的SunCertPathBuilderException
EN

Stack Overflow用户
提问于 2014-01-15 02:10:19
回答 1查看 3K关注 0票数 1

最近,我为一个网站获得了一个新的证书,并按照推荐的SHA-2签名算法生成了它。在我试图用Java (java.net.URLConnection)与该网站建立安全连接之前,一切看起来都很好,这导致了

代码语言:javascript
复制
SunCertPathBuilderException: unable to find valid certification path to requested target

这通常发生在自签署的证书上。只是这不是一个自签名的证书,HTTPS请求可以在浏览器上正常工作。

当我用SHA-1签名算法重新对证书进行密钥处理时,问题就消失了.

为什么我不能使用带有最近JDK (1.7.0_45)的SHA-2签名证书?我能做些什么让JDK接受SHA-2签名的证书吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-23 00:36:13

我们在java中使用了相当多的沙-2证书,所以我很确定问题不是沙-2本身,而是它发出的CA。

这很可能是因为它是一个沙-2证书,它是从一个更新的沙-2 CA发出的,这个CA是在网络浏览器中注册的,但在Java的默认信任库(仙人掌文件)中,不是。沙-1证书可能有效,因为它是从一个较老的CA颁发的,是信任库中的

您将需要导出颁发了sha-2网站证书的CA证书,并将其导入您的java信任库。如果您将url放到web浏览器中,您应该能够单击锁图标并查看整个链。CA证书是顶部的证书。

  1. 获得base64格式的CA证书作为ca.cer (如果需要,我可以发布确切的步骤)。注意,keytool要求证书格式为base64格式,否则它将拒绝它。
  2. 运行以下命令(用JDK路径替换JAVA_HOME ):JAVA_HOME\bin\keytool -keystore JAVA_HOME\jre\lib\security\cacerts -import -file ca.cer -alias newca
  3. 您将被提示输入密码,输入"changeit“而不带引号。
  4. 您将被问到“信任此证书?没有”类型“是”。

现在,java.net.URLConnection应该能工作。我们经常会遇到这个问题,如果Oracle能够发布对仙人掌文件的更新,那就太好了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21127896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档