从Java 7u45开始,如果网页尝试通过javascript与其进行交互,并且该页面未在清单的Caller-Allowable-Codebase属性中列出,则applet将显示警告消息(即使使用受信任的证书进行签名).
有关此更改的发行说明:http://www.oracle.com/technetwork/java/javase/7u45-relnotes-2016950.html
有关此错误的Oracle博客文章:https://blogs.oracle.com/java-platform-group/entry/7u45_caller_allowable_codebase_and
属性描述:http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/manifest.html#caller_allowable
我只尝试了一个通配符(*),但我仍然收到警告.
除了列出它可能运行的所有代码库之外,还有其他方法吗?
这对我来说是个问题的原因是这个小程序在许多不同的机器和网络上运行,但总是在不同位置的内部网上运行.这个小程序还需要与javascript通信,因为它与本地USB秤对话并显示结果并与页面交互.

当我试图在下面的罐子里自我签名时.
jarsigner -keystore my keystore myjar.jar myalias
Run Code Online (Sandbox Code Playgroud)
它给出了警告:
没有-tsa或-tsacert,这个jar没有时间戳.如果没有时间戳,用户可能无法在签署者证书的到期日期(2014-05-08)之后或任何未来的撤销日期之后验证此jar.
请帮忙解决问题.
我为什么要签署我的JAR文件?
我知道我需要签署我的客户端JAR文件(包含Applet),以便可以完成文件系统访问等特殊操作,以便窗口底部的烦人位不会显示,但为什么还要显示?我是否需要签署包含Servlet等的服务器端JAR文件?
关于何时何何不签署JAR的一些基本规则将不胜感激 - 谢谢!
我制作了一个奇怪的小程序,可以让你用你的声音画画.显然它需要访问麦克风,但Java小程序不允许访问,除非它们已签名.据我所知,它很难并且涉及密码学,虽然不清楚,但我认为我也应该向Verisign支付金钱.这一切似乎都是很多偏执的创新,让我感到闷闷不乐,我认为我不是第一个这么想的人.
有没有办法绕过这个"用于教育或测试目的?" 或者可能在我的浏览器中关闭安全性?或免费签署小程序?
我使用的是Firefox 3.0.15和Java 1.6.0的Ubuntu 9.04
昨晚发布了一个新的Java 7更新:7u65.我有一个Web应用程序,其中加载了一个服务小程序,并且在更新之后,我在不同PC上的测试没有显示问题也没有错误的行为.
后来,我开始收到与我的产品的Java服务小程序相关的问题报告.所有报告都来自将Java JRE更新为7u65(从7u60开始)的用户:
所有测试都是在清除浏览器和Java缓存之后执行的,甚至在删除已安装的证书之后(我的是有效的签名小程序).
我检查了Java 7u65发行说明,并且所提到的任何更改似乎都不会影响我的applet.此外,使用Java 7u60时没有任何问题.
我没有任何关于发生了什么的线索,也许是因为java更新是在几小时前发布的.由于即使我配置Java控制面板也无法显示Java控制台,我无法判断是否有任何异常.我无法在我的电脑中重现这个问题(Windows 8,也不是Windows 7,都是64位),但是在Windows 7 PC上已经报道了这个问题.
我的一位朋友告诉我,这似乎发生在使用Java 7u60的机器上,然后在没有卸载的情况下更新到Java 7u65.此外,这往往发生在较旧的操作系统(即:WinXP)中,这更自然.
我写这个问题是因为有些PC有这个问题似乎很奇怪,有些则没有.我想知道是否有其他人有这个问题,知道可能是什么原因,或者已经发现/应用任何解决方案.此外,如果我碰巧找到它,我想分享解决方案.
谢谢.
编辑:
外部引用,与同一Java版本(JRE)相关.
支持公告的结尾被误读为"Java不再适用于Windows XP"或"Oracle将阻止Java更新应用于Windows XP".这些陈述不正确.
我编译了我的applet,创建了一个jar文件,用keytool生成了一个密钥库db,用jarsigner签署了jar,并用keytool导出了公钥证书.
现在,当我在浏览器中运行我的applet时它确实有效,在提示我之后我是否确定要运行它.
问题是它在框中说"发布者:未知".无论如何我可以将它设置为我的别名,因为我编写了applet?
我们有一个小程序也使用javascript来applet通信.
在将java升级到7u45之后,根据此链接,我们使用清单来构建jar的更改如下:
我们也禁用了-Djnlp.packEnabled参数.
通过这些更改,只有当可用的Java版本更新为JRE7u45时,我们的应用程序才能正常运行.
LiveConnect (JavaScript) blocked due to security settings".但是如果我们只是包含Trusted-Library并将其设置为true,则不要在清单中包含上述参数.我们能够启动应用程序但有警告.同样的方法不能用于JRE7u45,我们再次获得安全警告.在其中一篇文章中,我看到了构建两个jar的方法(一个方法为1,另一个方法为2),并基于java版本部署相应的jar.
但是这个解决方案可能不那么有效,因为我们的应用程序包含5个以上的jar文件,并且维护每个文件的两个副本很繁琐.
您的建议将有助于我们了解我们的应用程序将与所有Java版本一起启动的方法.
在JRE 1.7u45上加载Java小程序时出现以下错误.
java.lang.SecurityException: com.sun.deploy.net.JARSigningException:
Found unsigned entry in resource #name of the applet#
at com.sun.deploy.cache.CacheEntry.getJarFile(Unknown Source)
at com.sun.deploy.model.ResourceProvider.getCachedJarFile(Unknown Source)
at sun.plugin.PluginURLJarFileCallBack$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.PluginURLJarFileCallBack.retrieve(Unknown Source)
at sun.net.www.protocol.jar.URLJarFile.retrieve(Unknown Source)
at sun.net.www.protocol.jar.URLJarFile.getJarFile(Unknown Source)
at sun.net.www.protocol.jar.JarFileFactory.get(Unknown Source)
at sun.net.www.protocol.jar.JarURLConnection.connect(Unknown Source)
at sun.plugin.net.protocol.jar.CachedJarURLConnection.connect(Unknown Source)
at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFileInternal(Unknown Source)
at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFile(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.getJarFile(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.access$1000(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.ensureOpen(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.<init>(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud) 我在使用ZipInputStream读取并从Applet遍历ZipEntry的zip文件中有一堆图像文件。
ZipInputStream zis = new ZipInputStream(in);
ZipEntry ze = null;
while ((ze = zis.getNextEntry()) != null) {
htSizes.put(ze.getName(), new Integer((int) ze.getSize()));
if (ze.isDirectory()) {
continue;
}
int size = (int) ze.getSize();
// -1 means unknown size.
if (size == -1) {
size = ((Integer) htSizes.get(ze.getName())).intValue();
}
byte[] b = new byte[(int) size];
int rb = 0;
int chunk = 0;
while (((int) size - rb) > 0) {
chunk = zis.read(b, rb, (int) size - rb);
if (chunk == -1) …Run Code Online (Sandbox Code Playgroud) 我创建了Java signed applet,如果我将Java(JRE 8)安全级别设置为 高并在异常站点列表中添加我的站点URL,则它运行得很好.
但是如果我们不在异常站点列表中添加站点URL,则会出现如下所述的java安全异常:在异常站点列表中添加url
我使用第三方证书创建了一个签名的小程序.
这是创建签名applet后的清单文件:
是否有任何选项可以通过在创建签名小程序时添加清单文件中的一些更改来避免这些安全阻止弹出窗口,或者任何脚本,java代码以避免这些弹出窗口而不在异常站点列表中添加站点URL?
或者是不是真的从Java强制性那我们必须要添加的网站网址的例外站点列表中,以避免这种阻塞错误.
基本上有没有可用的选项通过清单文件或任何Java代码在异常站点列表中添加我们的URL?

如果我想使用签名证书签署我的applet,那么它必须是代码签名证书吗?通配符或ssl证书不起作用?
虽然我已经通过通配符证书签署了我的applet,但我正在获得自签名applet块问题.
java ×10
signed-applet ×10
applet ×7
jar ×3
security ×3
manifest ×2
certificate ×1
jar-signing ×1
zip ×1