Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
服务器更改后的Java安全警告SSL连接_Java_Security_Tomcat_Ssl_Applet - Fatal编程技术网

服务器更改后的Java安全警告SSL连接

服务器更改后的Java安全警告SSL连接,java,security,tomcat,ssl,applet,Java,Security,Tomcat,Ssl,Applet,在服务器更改之后,当加载JavaEE应用程序(Serlvet API 3)中使用的小程序时,我在浏览器(经过测试的FF和Chrome)中收到令人讨厌的SSL警告 警告说:“证书无效,无法用于识别网站” 更详细的警告是:“提供证书的证书颁发机构不受信任。”这些消息被翻译成英语,因此请原谅其中的细微差异。在这个消息之后,我得到了Java消息,它显示小程序是普通签名的(带有蓝色符号的对话框)。因此,小程序正在工作,只有警告消息令人烦恼 在我转移到另一台服务器之前,一切都很好,工作正常。没有安全警告或其

在服务器更改之后,当加载JavaEE应用程序(Serlvet API 3)中使用的小程序时,我在浏览器(经过测试的FF和Chrome)中收到令人讨厌的SSL警告 警告说:“证书无效,无法用于识别网站” 更详细的警告是:“提供证书的证书颁发机构不受信任。”这些消息被翻译成英语,因此请原谅其中的细微差异。在这个消息之后,我得到了Java消息,它显示小程序是普通签名的(带有蓝色符号的对话框)。因此,小程序正在工作,只有警告消息令人烦恼

在我转移到另一台服务器之前,一切都很好,工作正常。没有安全警告或其他任何东西。小程序由我从CA请求的证书(rapidssl)签名 旧的服务器环境只是第三方主机提供的一个公共web空间。现在我转移到我自己的服务器,它利用XEN托管VM。在其中一个内部vm上,部署了我们的Web服务器。根据这一点,我定义了防火墙规则,将流量http/https路由到虚拟机。 此外,该域已移植,在旧主机处购买,新服务器的ip绑定到该域。 我在基于debian的操作系统上使用Tomcat7作为应用服务器

在旧环境中,我可以使用我的通配符证书的CN中指定的url。(例如.*.domain.com) 在新环境中,基本信息是:*.domain.com:端口不是受信任的站点。 实际上,我认为SSL证书独立于所使用的端口。我也在一些研究中读到过。我也在这里搜索了很多线索,但假设的答案对我来说并不适用

证书和根证书被导入Java自己的密钥库cacerts。在Tomcat7中,我对SSL使用JSSE实现,并正确设置密钥库文件

我已经尝试过了,但由于我对SSL/TLS技术没有太多经验,尝试过的解决方案甚至无法解决我的问题:

  • 在Tomcat 7中禁用SNI(不工作)
  • 在server.xml中添加主机别名(不起作用)
有人能澄清一下,实际问题是什么,或者曾经经历过同样的问题吗


@编辑:我可以在这里提供的任何日志中都没有错误堆栈跟踪,也没有抛出异常。

很明显,由于Khanna111 Gaurav Khanna和jwv,证书链没有正确设置。我想,如果证书链有任何问题,浏览器会通知我。不是这样的。 当我们从旧主机迁移到新服务器时,它们只提供证书,而不提供私钥。 由于我对SSL没有太多经验,我认为导入中介证书和获取的证书就足够了。。不是:)

跌跌撞撞 java中级ca证书(注释中的链接),我读过这篇文章,它解决了我的问题:&

我有certkey.key、publiccert.crt、intermediate\u primary.cer和secondary\u primary.cer文件

第一步是将.key和.crt文件转换为DER格式,如上一个链接中所述 由于keytool无法在现有密钥库中导入密钥,因此通过OpenSSL 转换为DER格式后,我使用工具ImportKey创建了一个包含key/cert的新密钥库

第二步是按照第二个链接(Bruno的答案)的说明进行操作,因此它是将证书内容复制并粘贴到单个文件中。将证书包导入密钥库后,一切正常

我希望这可以帮助其他人,他们也不太熟悉SSL


p、 由于我没有代表,我不能提及所有的网站,我用过。。我将在评论中提供它们

chrome客户端与之前的相同还是在不同的框中?如果是,则缺少ca的根证书。也可能是您误用了服务器密钥库中的中间ca证书。是的,它是同一个客户端。导入的根证书是根证书和中间证书的捆绑包,包含在单个文件中。再次检查根捆绑包是否正确导入到服务器密钥库中,包含2个条目,根CA+中间捆绑包+专用证书。是否向客户提供了中间ca证书?您可以使用tcpdump进行检查。或者,您可以在客户端上将intermefiate添加为trusted,以减少问题的范围。“导入的根证书是根证书和中间证书的捆绑包”-服务器应该发送服务器的证书和所有中间证书,以避免“哪个目录”问题。这是客户端软件所期望的。客户端软件必须已具有(并信任)根。
openssl s_client-connect:
的输出是什么?指向java中中间ca证书的链接: