首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >签署jnlp以消除安全警告

签署jnlp以消除安全警告
EN

Stack Overflow用户
提问于 2014-01-06 09:48:34
回答 2查看 12K关注 0票数 6

我是在一家公司开发的,该公司使用jnlp文件来启动基于swing web的java应用程序。它有大量jars下载到客户端的jvm缓存中。当我将jvm更新到当前的最新版本(Build1.7.0_45-b18)时,当我试图运行jnlp文件时,我开始看到下面的安全警告:

在我看到这个错误并阅读了这篇关于从oracle站点( 签名JNLP文件)对jnlp文件进行签名的文章之后,我向项目添加了三项内容:

  1. 一个包含APPLICATION.JNLP文件的JNLP-INF文件夹进入我的所有jars,第三方除外。
  2. 用我自己公司的数字certificate+keystore包签署所有这些罐子
  3. 通过java控制面板将数字证书导入到jvm的可信Ca证书中。

在完成上述更改并在部署新jars后尝试运行jnlp文件后,我从jvm获得了以下安全警告消息:

如您所见,安全警告的严重性级别被更改为更欢迎的级别,现在发布服务器的名称不是unknown.It,而是证书中的名称。即使警告的级别降低了,它仍然是一个警告,我不希望我的最终用户每次都看到这一点。我该如何解决这个问题?

  1. 我也应该试着签下所有第三部分的罐子吗?如果是这样的话,我如何使用Ant命令来完成它呢?如何提取第三方jar并在其中添加JNLP文件夹,然后使用Ant将其重新打包为jar?
  2. 我是否也应该用JNLP在it.This ear文件中部署到jboss服务器中的子文件夹对最终的JNLP文件进行签名?
  3. 我应该在jars中的META/清单文件中添加一些额外的行吗?
  4. 我是否应该期望oracle阻止我的应用程序在jvm上运行,并具有此级别的警告?

我的JNLP文件是这样的:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
    <jnlp spec="1.0+" codebase="http://10.100.10.9/ikarusdelhitest/" href="ikarus.jnlp">
<information>
    <title>Ikarus</title>
    <vendor>My Company name</vendor>
    <homepage href="http://www.mycompanyname.com" />
    <description>My jnlp triggered web based enterprise software</description>
    <icon href="ikarus.ico" />
    <offline-allowed />
</information>
<security>
    <all-permissions />
</security>
<resources>
    <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"
        java-vm-args="-Xnoclassgc -Xincgc -client -XX:DefaultMaxRAM=208M -Xms64M -Xmx256M -XX:PermSize=32M -XX:MaxPermSize=128M -XX:MinHeapFreeRatio=15 -XX:MaxHeapFreeRatio=50" />
    <jar href="jars/ikarus/ikarusClient.jar" />
    <jar href="jars/ikarus/ikarusDelegators.jar" />
    <jar href="jars/ikarus/clientRules.jar" />
    <jar href="jars/ikarus/ruleImps.jar" />
    <jar href="jars/ikarus/ikarusUtil.jar" />
    <jar href="jars/ikarus/ikarusResources.jar" />
    <jar href="jars/ikarus/domain.jar" />
    <jar href="jars/ikarus/domain_repository.jar" />
    <jar href="jars/ikarus/domain_service.jar" />
    <jar href="jars/ikarus/app_repository.jar" />
    <jar href="jars/ikarus/app_service.jar" />
    <jar href="jars/ikarus/infrastructure.jar" />
    <jar href="jars/ikarus/integration_domain.jar" />
    <jar href="jars/jboss_ejb_auth/ejb3-persistence.jar" />
    <jar href="jars/jboss_ejb_auth/jboss-ejb3x.jar" />
    <jar href="jars/jboss_ejb_auth/jbossall-client.jar" />
    <jar href="jars/jasper/commons-beanutils-1.8.0.jar" />
    <jar href="jars/jasper/commons-collections-3.2.1.jar" />
    <jar href="jars/jasper/commons-digester-1.7.jar" />
    <jar href="jars/jasper/commons-logging-1.1.jar" />
    <jar href="jars/jasper/iText-2.1.0.jar" />
    <jar href="jars/jasper/jasperreports-3.6.0.jar" />
    <jar href="jars/jasper/poi-3.2-FINAL-20081019.jar" />
    <property name="jnlp.localization" value="Delhi"/>
</resources>
<application-desc main-class="com.celebi.ikarus.main.Ikarus" />

谢谢你的帮助/评论/头脑风暴。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-07 08:21:09

由于java-vm-args,这个JNLP似乎需要签名,但是要意识到,可以以一种方式指定大部分与内存相关的选项,这样就不需要对JNLP进行签名。我建议你试一试。

编辑

JNLP是Java插件的一部分-- Java插件是从浏览器中删除的,并在Java 9中被Oracle拒绝。

票数 5
EN

Stack Overflow用户

发布于 2014-01-06 10:35:26

我相信您收到了这个警告,因为您请求JNLP以完全权限运行,而用户需要知道这一点。

如果应用程序不需要访问关键资源(例如写入硬盘),则可以通过替换以下内容以沙箱模式运行应用程序:

代码语言:javascript
运行
复制
<security>
    <all-permissions />
</security>

通过

代码语言:javascript
运行
复制
<security>
    <sandbox />
</security>

http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/manifest.html中所记载的

您也可以删除它,因为沙箱是默认值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20947154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档