签署.Jar文件

12

我遇到了一个问题。我正在为我们的支持团队创建一个php/html网站(内部网),以便在支持Linux机器时使生活更轻松。

我有一个名为mindterm的.jar应用程序(免费版本),并希望将其作为applet在网站中运行。

但是根据他们的网站,您必须在加载它作为applet之前对.jar文件进行签名,否则它无法打开tcp连接。

因此,在我拥有的时间里,我尽可能多地研究了提供在JDK安装中的jarsigner.exe和keytool.exe文件。

然而,我不知道如何签署此应用程序,以便我实际上可以使用它。

有什么帮助吗?

谢谢。


你的问题不在签名过程中,而是需要证书和私钥。这个“Java代码签名证书”必须由可信中心购买。 - Robert
4个回答

20

首先使用 keytool 创建一对密钥。

keytool -genkey -alias somekeyname

接下来,使用 jarsigner 命令,使用刚刚创建的密钥对其进行签名。

jarsigner /path/to/jar somekeyname

请注意,您需要使用与创建密钥时相同的别名(此处为somekeyname)。

由于证书是自签名的,您的小程序用户将被提示批准该证书。一旦他们这样做,您的TCP连接就应该工作了。

我假设您只在组织内部使用小程序,自签名证书应该没问题。否则,您将需要支付一定费用来获取证书。在那种情况下,您的用户在第一次之后将不需要再接受证书(如果他们选择“始终允许”)。


谢谢提供的信息,我会尽快尝试。我们所有操作都在内部完成,所以对于拥有自签名证书并不太在意。 - Stroes
1
否则您将需要支付证书费用。在这种情况下,您的用户将无需手动接受证书。购买证书并不能绕过安全对话框,只是让它们变得更漂亮,并记住“始终允许”。 ;) - Andrew Thompson
哎呀,是的,很久没有使用签名小程序了。我已经更新了答案来说明这一点。 - Rajesh J Advani

1
您可以使用以下方式签署JAR文件:
安装此Eclipse插件 Eclipse Webstart Plugin. 您只需要将其导出为“Webstart”。它会提示您签署JAR文件。 演示

1

将最佳答案与一些 有用的 提示相结合,以获得完全无人值守的脚本:

keytool -genkey -noprompt -alias Alias -dname "CN=Hostname, OU=OrganizationalUnit, O=Organization, L=City, S=State, C=Country" -keystore path.to.keystore -storepass password -keypass password -validity 3650
jarsigner -keystore path.to.keystore -storepass password -keypass password -signedjar signed.jar unsigned.jar Alias

-1

这是一个相对复杂的领域,你需要确切地知道自己在做什么,并且可能需要支付真实货币来获取签名证书。

Sun Java教程涵盖了该主题:http://docs.oracle.com/javase/tutorial/deployment/jar/signing.html

如果目的是为支持人员提供ssh客户端,则可能有更好的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接