java – 如何解决“证书无效且无法用于验证此网站的身份”错误?

问题是,如何解决“证书无效且无法用于验证本网站的身份”错误

以下是详细信息:

我有一个已经正常工作的签名小程序,直到我将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”下载罐子,但小程序连接到“https://sub.domain.net:9876”以发送/接收数据.

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

再次,这在将我的JRE更新为8u25后开始发生.我已经测试过将有问题的URL添加到Java安全例外列表中,但没有成功.

以下是此问题的一些屏幕截图:

这是显示的警告消息:

编辑2014年10月18日:

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

编辑2014年10月21日:

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

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”下载,这是错误的.应用程序(applet)已经下载,它只在内部HTTPS请求中使用该域,以获取/发送业务数据,而不是下载其他Jars,JNLP等.

解决方法

我找到了如何解决这个问题,并感谢 Steffen Ullrich提出了有效的建议.

这与证书的公用名(CN)值有关.就我而言,该值为* .DOMAIN.NET,并将其更改为* .domain.net,我们所要做的就是一个名为“Domain Transfer”的过程.这意味着,要将CN更改为* .REKEY.DOMAIN.NET,然后再将其更改为* .domain.net.我们无法直接将其更改为* .domain.net,因为证书提供商说* .DOMAIN.NET和* .domain.net是相同的.

现在,这个问题只发生在Java 7.71和Java 8.25上.以前版本的Java 7和8没有此问题(CN在不同外壳中的SSL证书限制).

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

相关文章

ArrayList简介:ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增...
一、进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程...
本文为博客园作者所写: 一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 简单的一个类...
#############java面向对象详解#############1、面向对象基本概念2、类与对象3、类和对象的定义格式4、...
一、什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域...
Collection接口 Collection接口 Collection接口 Collection是最基本的集合接口,一个Collection代表一组...