更改服务器后,在加载applet时,我在浏览器(测试的FF& Chrome)中收到了令人讨厌的SSL警告,用于JavaEE应用程序(Serlvet API 3) 警告说:"证书无效,不能用于识别网站" 更详细的警告说:"提供证书的证书颁发机构不受信任。"这些消息被翻译成英文,所以请原谅我的细微差别。在此消息之后,我收到Java的消息,其中显示Applet是普通签名的(带有蓝色符号的对话框)。所以Applet正在运行,只有警告信息烦人。
在我搬到另一台服务器之前,一切都很好并且工作正常。没有安全警告或其他任何东西。 Applet由证书签名,我是从CA请求的。 (的RapidSSL) 旧服务器环境只是一个常见的Web空间,由第三方托管服务提供。现在我转移到我自己的服务器,它利用XEN托管虚拟机。在其中一个内部虚拟机上,部署了我们的网络服务器。据此,我定义了防火墙规则来将流量http / https路由到vms。 域名也被移植,在旧的托管服务商处购买,新服务器的IP绑定到域名。 我在基于debian的操作系统上使用Tomcat 7作为Application Server。
在旧环境中,我可以在我的通配符证书的CN中使用指定的URL。(例如* .domain.com) 在新环境中,基本消息显示:* .domain.com:端口不是受信任的站点。 我认为,SSL Certs独立于使用的端口。我也读过一些研究报告。我也在这里搜索了许多帖子,但是假设的答案对我没用。
证书和根证书。被导入Java自己的密钥库cacerts。在Tomcat 7中,我使用JSSE实现SSL,并正确设置密钥库文件。
我已经尝试过这个了,但是由于我不熟悉SSL / TLS技术,尝试过的解决方案甚至可能无法解决我的问题:
任何人都可以澄清,实际问题是什么,或者遇到过同样的问题?
@edit:在任何日志中都没有错误堆栈跟踪,我可以在这里提供,也没有异常被抛出。
答案 0 :(得分:0)
很明显,感谢Khanna111 Gaurav Khanna和jwv,证书链没有正确设置。我想,如果证书链有任何问题,浏览器会通知我。它不是那样的。 当我们从旧主机迁移到新服务器时,它们只提供证书,但没有私钥。 由于我没有那么多的SSL经验,我认为导入中间证书和获得的证书就足够了..它不是:)
绊倒之后 middle-ca-certificate-in-java(评论中的链接),我已经读过这个,这解决了我的问题:why doesn't java send the client certificate during SSL handshake?& external website:Import private key and certificate into Java Key Store (JKS)我有certkey.key,publiccert.crt,intermediate_primary.cer和secondary_primary.cer文件。
第一步是将.key和.crt文件转换为DER格式,如上一个链接所述 由于keytool无法在现有密钥库中导入密钥,因此通过OpenSSL 转换为DER格式后,我使用了Tool ImportKey并创建了一个包含key / cert的新密钥库。
第二步是按照第二个链接(Bruno的答案)的说明进行操作,因此将证书内容复制并粘贴到一个文件中。将证书包导入密钥库后,一切都很好。
我希望这可以帮助其他人,也不熟悉SSL。
P.S。由于我缺乏代表,我不能提及所有网站,我已经使用..我会在评论中提供它们