jjzjj

java - 如何解决 "The certificate is not valid and cannot be used to verify the identity of this website"错误?

coder 2024-03-21 原文

问题是,如何解决“证书无效,不能用于验证此网站的身份”错误?

详情如下:

在我将 Java 更新到 8u25 (1.8.0_25-b18) 之前,我有一个签名的小程序一直运行良好。现在,应用程序显示一条警告消息“你想继续吗?与此网站的连接不受信任”。此消息中也有一条注释,“证书无效,不能用于验证此网站的身份”。

小程序加载没有问题。但是当用户尝试使用该应用程序的特定功能时,会显示警告消息。

发生这种情况时,我已经检查了 java 控制台,并且在这些行之后显示了这条警告消息:

security: Obtain certificate collection in SSL Root CA certificate store
security: Invalid certificate from HTTPS server
network: Cache entry not found [url: https://sub.domain.net:9876, version: null]

应用程序是从不同的域下载的,例如“https://app.domain.net/ .....”,因此没有从“https://sub.domain.net:9876”下载任何 jar,但小程序连接到“https://sub.domain.net:9876”以发送/接收数据。

小程序已正确签名,到目前为止,它符合Java 的所有安全要求。当应用程序尝试使用类似 https://sub.domain.net:9876 的 HTTPS url 进行内部连接时,似乎会发生此问题。该网站的 SSL 证书有效,由 GoDaddy 颁发且未过期。

同样,这在将我的 JRE 更新到 8u25 后开始发生。我测试过将有问题的 URL 添加到 Java 安全异常(exception)列表,但没有成功。

下面是这个问题的一些截图:

这是显示的警告消息:


编辑 10/18/2014:

问题也在“Oracle Community”中发布,以增加答案选项: Question in Oracle Community .


编辑 10/21/2014:

我注意到这一点:当我单击“安全警告”对话框中显示的“更多信息”链接时,显示的原因是:

The application is being downloaded from a site other than the one specified by the security certificate.

  • Downloading from "sub.domain.net"

  • Expecting "*.DOMAIN.NET"

此消息表示正在从“sub.domain.com”下载应用程序,这是错误的。应用程序(小程序)已下载,它仅在内部 HTTPS 请求中使用该域来获取/发送业务数据,而不是下载其他 Jar、JNLP 等。

最佳答案

我找到了解决这个问题的方法,感谢Steffen Ullrich一个有效的建议。

这与证书的通用名称 (CN) 值有关。在我的例子中,该值是 *.DOMAIN.NET,要将其更改为 *.domain.net,我们所要做的就是一个名为“域转移”的过程”。这意味着,将 CN 更改为 *.REKEY.DOMAIN.NET,然后再次将其更改为 *.domain.net。我们无法直接将其更改为 *.domain.net,因为证书提供商说 *.DOMAIN.NET*.domain.net 是相同。

现在,这个问题只发生在 Java 7.71 和 Java 8.25 中。 Java 7 和 8 之前的版本没有这个问题(不同大小写的 CN 的 SSL 证书限制)。

无论如何,这解决了问题,现在我们收到了有关域的温和信息消息:

关于java - 如何解决 "The certificate is not valid and cannot be used to verify the identity of this website"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26433285/

有关java - 如何解决 "The certificate is not valid and cannot be used to verify the identity of this website"错误?的更多相关文章

随机推荐