【发布时间】:2014-08-15 03:13:25
【问题描述】:
我在对 Java 小程序进行自签名时遇到了麻烦。该小程序仅包含一个名为 TestApplet 的类,并且可以在 Eclipse 小程序查看器中正常工作。小程序被打包成一个使用密钥库签名的 jar 文件。
jarsigner -keystore ..\.keystore bin\TestApplet.jar myalias
输出“jar 签名” 并发出警告消息:“签名者证书将在 6 个月内过期”
我将文件上传到公共网页并在网络浏览器中运行小程序,但收到错误消息:“应用程序被安全设置阻止”并且无法运行小程序。如果我将安全级别更改为中,我会收到一条警告消息:“来自以下位置的未签名应用程序正在请求运行权限。”我可以让小程序运行。但是小程序需要在其他计算机上运行,所以这个解决方案是不够的。
如果我从主机下载 jar 文件,我可以验证它。
jarsigner -verify TestApplet.jar
输出“jar 验证”
那么为什么 jar 文件在从 Web 浏览器中运行时似乎未签名,但在使用 jarsigner 检查时似乎已签名?
我唯一能想到的是 TestApplet.jar 被完全忽略了。可以在不指定存档参数的情况下运行小程序。
这是文件的结构。
bin/TestApplet.class
bin/TestApplet.jar
index.html
这是我用来将 java 小程序添加到网页的代码。
<object type="application/x-java-applet" width="100" height="100">
<param name="codebase" value="bin" />
<param name="archive" value="bin/TestApplet.jar" />
<param name="code" value="TestApplet" />
</object>
编辑: 如果有任何不同,小程序将在未连接到 Internet 的本地网络上运行。
【问题讨论】:
-
大多数浏览器认为“未签名”和“自签名”是一回事,因为它们无法通过自签名证书验证您的身份。
-
未签名和自签名的 JAR 或多或少已被 Oracle 弃用。使用默认安全设置现在在浏览器中运行小程序的唯一方法是使用真正的 CA 对其进行签名。
-
这是他们的安全公告的一个来源:blogs.oracle.com/java-platform-group/entry/…