3

我正在通过 JNLP 部署 Java 小程序。Applet 的功能按预期工作,我的问题在于运行时显示的安全警告。我已经广泛搜索了关于它们何时以及为什么出现而没有任何足够答案的答案,所以我想我试图在这里得到一些答案。

前提:我的 Applet 使用自签名证书进行签名,该证书也作为受信任的 CA 导入(显示“看起来更安全”警告)。我将在生产中使用来自 Thawte 或 Verisign 的真实证书,但现在这应该足够了。不需要外部权限,磁盘访问仅通过 JNLP 完成。

因为我希望能够使用 FileSaveService 和 FileOpenService,所以我在 JNLP 文件的安全部分中指定了 j2ee-application-client-permissions 标记。

Javascript 用于调用小程序中的公共函数。

现在发生这种情况:加载小程序时,我收到一个安全提示,警告我此小程序将在无限制访问系统的情况下运行。警告是带有蓝色信息显示而不是黄色警告的受信任类型。为什么我会收到此警告?即使我坚持只使用 JNLP 库,这是否总是会出现?这个警告是如何确定的,是通过扫描我的代码还是通过阅读我可以更改的一些设置?是否有允许在没有收到此警告的情况下运行的类列表?

加载小程序并尝试打开文件对话框后,我再次收到提示说应用程序已请求读/写权限。

我假设后面的警告是 JNLP 警告,因为它是在我开始使用 JNLP 时首次出现的。为什么在启动和使用过程中都会收到提示?我是否需要同时获得两者,一旦获得适当的证书,我是否会同时获得两者?

最重要的是,我想摆脱第一个警告,因为让我的小程序以不受限制的访问权限运行看起来相当可怕(特别是因为这根本不是我的意图!)。是否有任何文档可以清除触发警告的原因以及如何处理它们?

编辑:该文件已通过 Janela 验证,没有错误。一切都按原样启动,这是我想了解的警告。

<script>
var attributes = {
    id:'id',
    codebase:'www.mydomain.com/jars/',
    width:1, 
    height:1, 
    name:"Name"
};
var parameters = {
    jnlp_href:"www.mydomain.com/jars/jnlp.jnlp"
}                       
    deployJava.runApplet(attributes, parameters, '1.6');
</script>

JNLP 文件

<?xml version="1.0" encoding="UTF-8"?>
    <jnlp spec="1.0+" href="/jars/jnlp.jnlp">
    <information>
    <title>Title</title>
    <vendor>My Company</vendor>
    <description>Description</description>
    <description kind="short">Desc</description>
    <offline-allowed />
    </information>

    <resources>
    <j2se version="1.6+" />
    <jar href="ext1.jar" main="false" download="eager"/>
    <jar href="ext2.jar" main="false" download="eager" />
    <jar href="mainJar.jar" main="true" download="eager"/>
    </resources>
    <applet-desc 
    name="name"
    main-class="com.myCompany.applet.mainClass" 
    width="1"
    height="1">
    </applet-desc>
<security>
    <j2ee-application-client-permissions/>
</security>
 </jnlp>
4

1 回答 1

1

您不必签署您的小程序。如果您不签名,则不会出现第一个警告。

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

于 2013-01-10T01:27:18.923 回答