问题是,如何解决“证书无效并且不能用于验证本网站身份”的错误?。如何解决“证书无效,不能用于验证本网站的身份”错误?
下面是详细信息:
我有一个签名的小已经工作正常,直到我更新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]
该applet签名正确,到目前为止,它符合Java所有的安全要求。当应用程序尝试使用像https://sub.domain.net:9876这样的HTTPS url进行内部连接时,似乎会发生此问题。该网站的SSL证书是有效的,由GoDaddy发布并且没有过期。
同样,在将我的JRE更新为8u25后开始发生这种情况。我测试了将违规URL添加到Java安全例外列表中,但没有成功。
下面是这个问题的一些截图:
这是显示警告信息:
编辑2014年10月18日:
问题标题d也可以在“Oracle Community”中增加答案选项: Question in Oracle Community。
编辑2014年10月21日:
我注意到了这一点:当我点击链接“更多信息”中的“安全警告”对话框中显示,显示的原因说:
该应用程序正从安全证书指定的一个以外的站点下载。
从 “sub.domain.net”
期待“*。域下载。NET”
该消息称,应用程序被下载了‘sub.domain.com’,那是假的。应用程序(applet)中已经下载,并且仅使用该域内部HTTPS请求,获取/发送的业务数据,而不是下载额外的罐,JNLPs等
+2
根据证书可能会为不同的主机名发在你的绝密屏幕截图的错误信息那么你在连接中使用的那个。可能是,Java8现在对证书中的名称进行了更严格的检查。 –
2014-10-18 06:06:03
+0
谢谢你的帮助。是的,这是可能的,但网站的证书是通配符,用于多个子域(https://my.domain.net,https://test.domain.net,https://domain.net ),所以我希望这个证书对Java也有效。如果不是这种情况,这意味着Java现在要求为每个域/子域指定一个单独的证书。我不确定问题的另一个原因是证书是否以大写字母提到网站的域名。 –
2014-10-18 15:07:20
+1
如果没有看到证书,很难说出了什么问题。但也可能是这样的,即Java 7没有在证书中验证主机名,而Java 8没有完成验证。另见http://stackoverflow.com/questions/18139448/how-should-i-do-hostname-validation-when-using-jsse –
2014-10-18 18:25:33