【问题标题】:How do I write a manifest file for the new java security barriers如何为新的 java 安全屏障编写清单文件
【发布时间】:2014-02-17 21:42:33
【问题描述】:

我有一个需要在我的网站上部署的 Java 小程序。

我的网站有很多页面,小程序出现在其中的许多页面上。我网站的基域是www.mycompany.com。但是小程序会出现在上面,例如:www.mycompany.com/dogwww.mycompany.com/catwww.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 签名:

  1. keytool -genkey -keystore myKeyStore -alias me
  2. keytool -selfcert -keystore myKeyStore -alias me
  3. jarsigner -keystore myKeyStore jarfile.jar me

【问题讨论】:

  • 在我的清单中,我什至有Implementation-Vendor: Company Name,但我没有“仅受信任”条目。 Java 控制台中显示哪些警告?
  • 在您的设置中,您的 Java 安全级别是多少?
  • 这是一个很好问的问题。非常罕见。非常好。

标签: java security applet manifest


【解决方案1】:

至于你得到的错误我可以想到三个可能的问题:

1) 您的小程序不要求其尝试执行的操作获得许可。

会发生什么?“权限”告诉用户应用程序对用户的计算机有多少“权力”。 “沙盒”不会让应用程序做太多事情,而“所有权限”可以让小程序获得更多控制权。当然,您可能希望使用最低权限(即沙盒),因为您使用的权限越低,用户获得的警告提示就越少。但是,例如,如果您的小程序试图访问用户的个人文件,但它的“权限”属性设置为“沙盒”,则小程序将无法工作,因为它没有为尝试执行的操作请求权限.

如何解决?很简单,把Permissions: sandbox改成Permissions: all-permissions

2) 您的计算机不允许运行自签名应用程序。

会发生什么? 大多数浏览器都有非常严格的适用于小程序的规则。特别是如果您需要所有权限(您不是)。

如何解决? 将 java 控制面板中的 java 安全性更改为较低的值。您可以在您的计算机中搜索“java 控制面板”或自行转到此路径(Windows 8 出于某种原因找不到 java 控制面板,因此您必须自己查找)C:\program files\java\jre7\bin\javacpl.exe 在 JCP 中转到安全选项卡并将其更改为中。

3) 您的操作系统不允许您运行您自己签名的小程序。 (注意“您自己签名的小程序”而不是“自签名小程序”,这是没有官方证书的所有内容。操作系统通常会以不同的方式对待它们。)

如何解决? 将小程序上传到网络主机服务并从另一台计算机输入,除您签署小程序的计算机之外的所有计算机都应该能够打开小程序。 p>


至于你提到的用户没有得到任何安全提示,这是一个几乎不可能的需求。有了各种各样的操作系统、浏览器和防病毒软件,您永远无法知晓。但是,有几种方法可以减少安全提示的数量:

  • 自签名小程序(自签名是您使用命令提示符执行的操作)很可能始终显示安全提示。您可以购买官方 SSL,它将大大减少提示数量。
  • 如果您需要“所有权限”,您将获得比需要“沙盒”权限时更多的提示。

我强烈建议您查看以下链接:

SSL:Where could I buy a valid SSL certificate?

权限:http://docs.oracle.com/javase/tutorial/deployment/applet/security.html


如果您遇到第 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 或 3),您甚至不必更改清单文件。

正如@tigran 提到的,如果您想从几个不同的地方运行您的小程序,您可能需要将“代码库”更改为 *。

【讨论】:

  • 感谢您的详尽回答。万一其他人在这里绊倒:我保留了权限sandbox,并按照您的指示将警告简化为:Publisher UNKNOWN,这基本上意味着我需要为我的证书支付第三方费用,而不是使用自签名。跨度>
【解决方案2】:

我在这里签署了一个 java 小程序,它运行良好。它在浏览器中运行。

生成密钥和签署小程序的步骤是(与您的步骤略有不同):

    keytool -genkey

    keytool -selfcert

//here the trick...it actually created another jar !

    jarsigner -signedjar tecladoVirtualSigned.jar tecladoVirtual.jar mykey

这个新的小程序运行。旧应用(未签名)显示权限问题。

【讨论】:

  • 但显示的警告好像 jar 尚未签名。这就是为什么我建议再次执行这些步骤。以稍微不同的方式。使用命令 jarsigner 创建另一个 jar
【解决方案3】:

您需要更改权限部分才能使其工作:

    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: *

权限:所有权限是关键部分。

【讨论】:

  • 我将赏金授予另一个答案,因为它更彻底。但感谢* 参考。 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
相关资源
最近更新 更多