我有一个需要在我的网站上部署的Java小程序。
我的网站有很多页面,小程序上出现了小程序。我的网站的基本域名为www.mycompany.com
。但小程序会显示在,例如:www.mycompany.com/dog
,www.mycompany.com/cat
,www.mycompany.com/pen
等。
入口点的包是com.mycompany.MyApplet
。
按照Java Security Manifest Changes in the Browser的说明,我为我的应用创建了以下清单。有人请为我审查一下,以便我说得对吗?基本上,当人们试图从我的网站上运行我的小程序时,我不希望出现任何警告。
清单
Manifest-Version: 1.0
Created-By: 1.7.0_51
Permissions: sandbox
Application-Name: My Farming Business
Application-Library-Allowable-Codebase: www.mycompany.com/where_the_applet_jar_actually_lives
Caller-Allowable-Codebase:www.mycompany.com
Codebase: www.mycompany.com
目前,在使用上述清单重新部署后,我得到以下对话框:
安全设置阻止的应用程序:您的安全设置具有 阻止不受信任的应用程序运行
参考:How do I inject new manifest into an existing jar for applet
另外,我使用以下步骤签署我的jar:
keytool -genkey -keystore myKeyStore -alias me
keytool -selfcert -keystore myKeyStore -alias me
jarsigner -keystore myKeyStore jarfile.jar me
答案 0 :(得分:4)
至于你得到的错误,我可以想到三个可能的问题:
1)您的小程序不会要求允许它尝试做什么。
会发生什么?“权限”告诉用户应用程序对用户计算机的“权力”。 “sandbox”不会让应用程序做很多事情,“所有权限”会让applet获得更多控制权。当然,您可能希望使用最低权限(即沙箱),因为您使用的权限越低,警告提示用户就越少。但是,例如,如果您的applet尝试访问用户的个人文件,但它的“权限”属性设置为“沙盒”,则applet将无法正常工作,因为它没有请求权限,因为它没有尝试执行的操作
如何解决?很简单,只需将Permissions: sandbox
更改为Permissions: all-permissions
2)您的计算机不允许自签名应用程序运行。
会发生什么?大多数浏览器都有非常严格的规则适用于applet。特别是如果你需要所有权限(你不是)。
如何解决?将java控制面板中的java安全性更改为更低的值。您可以在计算机中搜索“java控制面板”,也可以自己选择此路径(由于某种原因,Windows 8无法找到java控制面板,因此您必须自己查找){J}在JCP中转到安全选项卡并将其更改为中等。
3)您的操作系统不允许您运行自己签名的applet。 (注意“你自己签名的小程序”而不是“自签名小程序”,这是没有正式证书的所有内容。操作系统通常会以不同方式对待它们。)
如何解决?将小程序上传到网络托管服务并从另一台计算机上输入,所有计算机,但您签署小程序的计算机应该能够打开小程序。
至于你提到的用户没有得到任何安全提示,这几乎是不可能的要求。随着各种操作系统,浏览器和反病毒,你永远不会知道。但是,有一些方法可以减少安全提示的数量:
我强烈建议您查看以下链接:
SSL:Where could I buy a valid SSL certificate?
权限:http://docs.oracle.com/javase/tutorial/deployment/applet/security.html
如果您的问题编号1是清单文件:
C:\program files\java\jre7\bin\javacpl.exe
无论如何(如果您的问题是2或3),您甚至不必更改清单文件。
正如@tigran所提到的,如果您想从几个不同的地方运行您的applet,您可能希望将“codebase”更改为*。
答案 1 :(得分:1)
您需要更改权限部分才能使其生效:
Manifest-Version: 1.0
Created-By: 1.7.0_51
Permissions: all-permissions
Application-Name: My Farming Business
Application-Library-Allowable-Codebase: www.mycompany.com/where_the_applet_jar_actually_lives
Caller-Allowable-Codebase:www.mycompany.com
Codebase: *
权限:所有权限是关键部分。
答案 2 :(得分:0)
我在这里签了一个java小程序,它运行正常。它在浏览器中运行。
生成密钥和签署applet的步骤(与您的步骤略有不同):
keytool -genkey
keytool -selfcert
//here the trick...it actually created another jar !
jarsigner -signedjar tecladoVirtualSigned.jar tecladoVirtual.jar mykey
此新applet运行。旧应用程序(未签名)显示权限问题。