如何解决"证书无效且无法用于验证本网站的身份"错误?

Dav*_*vid 7 java security ssl applet ssl-certificate

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

以下是详细信息:

我有一个已经正常工作的签名小程序,直到我将Java更新为8u25(1.8.0_25-b18).现在,应用程序显示一条警告消息"您要继续吗?与此网站的连接不受信任".此消息中也有一个注释," The certificate is not valid and cannot be used to verify the identity of this website".

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

发生这种情况时我检查了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]
Run Code Online (Sandbox Code Playgroud)

该应用程序从另一个域下载,例如" https://app.domain.net/ .....",因此不会从" https://sub.domain.net:9876 " 下载任何jar ,但是applet连接到" https://sub.domain.net:9876 "以发送/接收数据.

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

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

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

这是显示的警告消息: 警告信息 有关警告消息的详细信息 证书基本信息1 证书基本信息2


编辑2014年10月18日:

问题也发布在"Oracle社区"中,以增加答案选项: Oracle社区中的问题.


编辑2014年10月21日:

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

正在从安全证书指定的站点以外的站点下载该应用程序.

  • 从"sub.domain.net"下载

  • 期待"*.DOMAIN.NET"

此消息表示应用程序正在从"sub.domain.com"下载,这是错误的.应用程序(applet)已经下载,它只在内部HTTPS请求中使用该域,以获取/发送业务数据,而不是下载其他Jars,JNLP等.

Dav*_*vid 2

我找到了解决这个问题的方法,并感谢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 证书限制在不同的大小写中)。

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

证书CN变更后的通知消息