6

我们的网站上有一个运行了很长时间的 Java 小程序。然后 Java 7 出来了,人们安装了它。当 Java 7 用户使用 HTTPS 访问我们的网站时,小程序无法加载 (ClassNotFoundException)。相同的站点和相同的小程序,当使用常规 HTTP 访问时,它工作正常。

使用以前版本的 Java (1.6.x) 的人可以使用 HTTP 或 HTTPS 毫无问题地查看小程序。

对于使用 Java 7 并喜欢使用 HTTPS 的人,我们可以做些什么来解决这个问题?

谷歌搜索并没有看到任何相关结果。任何指针将不胜感激。

4

1 回答 1

7

问题解决了。长话短说,原因是 Java 7 中的 JSSE(Java 安全套接字扩展)实现默认启用了 SNI(服务器名称指示),这需要在 SSL(安全套接字层)服务器上设置服务器名称.

对于 Apache,我们需要执行以下操作:

<VirtualHost default:443>

# General setup for the virtual host
DocumentRoot "/opt/apache/2.2.21/htdocs"
ServerName your.servername.com:443

以前我们将这一行注释掉,它适用于所有浏览器和所有 Java Applet,直到 Java 7 发布。

我在下面的 Java 开发者论坛上也有同样的讨论

https://forums.oracle.com/forums/message.jspa?messageID=10330444#10330444

于 2012-05-11T21:14:54.457 回答