刚刚有人向我指出我博客中的 Java Web Start 应用程序,例如我的 Key Bindings条目,由于以下安全错误而不再起作用:
经过一些调查,我确定 JDK7 中的安全性得到了改进,Java 控制面板
的安全选项卡
中的默认设置位于 Windows 控制面板
设置为 High
,这会阻止应用程序运行。如果您确实将此设置更改为 Medium
,那么您可以选择接受该应用程序并且它会运行。我猜大多数人都不想这样做,所以看起来我需要签署我的 jar 文件
。
问题是我真的不明白整个签名过程。
目前,我首先使用如下命令创建一个 .jar 文件:
jar cfev KeyBindings.jar KeyBindings KeyBindings*.class
然后我按如下方式创建 .jnlp 文件:
<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File for KeyBindings -->
<jnlp spec="1.0+"
codebase="http://www.camick.com/java/webstart/"
href="KeyBindings.jnlp">
<information>
<title>KeyBindings Application</title>
<vendor>Tips4Java</vendor>
<homepage href="http://tips4java.wordpress.com/"/>
<description>KeyBindings Application</description>
<description kind="short">Display the Key Bindings of Swing components</description>
<offline-allowed/>
</information>
<resources>
<j2se version="1.6+"/>
<jar href="KeyBindings.jar"/>
</resources>
<application-desc main-class="KeyBindings"/>
</jnlp>
.jar 和 .jnlp 文件上传到服务器,Web Start 应用程序使用以下 HTML 启动:
<a href="http://www.camick.com/java/webstart/KeyBindings.jnlp">...</a> - Using Java Web Start (JRE 6 required)
谁能告诉我创建受信任的应用程序(或签名的应用程序,无论适当的术语是什么)我需要遵循的额外步骤。
我目前没有为我的 Java Web Start 应用程序使用任何 IDE。我确实安装了 Eclipse,但从未使用过它。尝试使用 Eclipse 生成签名的 .jar 文件会更好吗?
更新:
这个过程比我想象的更复杂、更昂贵。我不想向证书颁发机构支付费用来签署我的 .jar 文件。此外,我目前使用的是一个不支持 SSL 的免费网络托管站点,因此无论如何我都无法使用已签名的 .jar 文件,因为我不想找到新的托管站点。
由于我写博客只是为了好玩,我不想承担使用签名 .jars 的额外费用,所以我想我将不得不找到一种不同的方式来演示代码。
感谢帮助。
最佳答案
您的小程序必须由知名的证书颁发机构 (CA) 签名。
您可以使用其中任何一个(Digicert、Thawte、Verisign 等...)
CA 将提供有关如何对 jar 文件进行签名的说明。
这是来自 Digicert 的文档:
关于Java Web Start 和安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24148861/