小编ali*_*kan的帖子

Java jnlp应用程序被安全设置阻止

我有一个企业java应用程序,它有很多jar,它们通过jnlp文件下载到客户端的jvm缓存中.当我启动应用程序时,我在Java控制台上获得以下堆栈跟踪:

        Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
at com.sun.deploy.ui.DialogTemplate.imageAvailable(Unknown Source)
at com.sun.deploy.ui.DialogTemplate.finalImageAvailable(Unknown Source)
at com.sun.deploy.ui.ImageLoader$2.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
       Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
at com.sun.deploy.ui.DialogTemplate.imageAvailable(Unknown Source)
at com.sun.deploy.ui.DialogTemplate.finalImageAvailable(Unknown Source)
at com.sun.deploy.ui.ImageLoader$2.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source) …
Run Code Online (Sandbox Code Playgroud)

java security jnlp certificate java-web-start

13
推荐指数
3
解决办法
6万
查看次数

签署一个jnlp以摆脱安全警告

我正在一家公司开发,其中使用jnlp文件来启动基于sw的基于web的Java应用程序.它有很多罐子可以下载到客户端的jvm缓存中.当我将我的jvm更新为其当前最新版本(build 1.7.0_45-b18)时,当我尝试运行jnlp文件时,我开始看到下面的安全警告:

未知的发布者错误

在我看到这个错误并阅读了关于从oracle站点签署jnlp文件(签署JNLP文件)的文章后,我向项目添加了三件事:

  1. 一个JNLP-INF文件夹,包括一个APPLICATION.JNLP文件到我的所有罐子中,除了第三方的文件夹.
  2. 使用我自己公司的数字证书+密钥库捆绑签署所有这些罐子
  3. 通过java控制面板将数字证书导入我的jvm可信Ca证书.

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

已知的发布者,但仍然没有签名错误

正如您所看到的,安全警告的严重性级别已更改为更受欢迎的级别,现在发布者的名称未知.它是证书中的名称.即使警告的级别降低,它仍然是一个警告,我不希望我的最终用户每次都看到这个.我怎么解决这个问题?

  1. 我是否应该尝试签署所有第三部分罐子?如果是这样,我怎么能用Ant命令呢?如何提取第三方jar并在其中添加JNLP-INF文件夹,然后使用Ant将其重新打包为jar?
  2. 我是否还应该使用JNLP-INF子文件夹在最终的myapplication .ear文件中签名.这个ear文件是否已部署到jboss服务器?
  3. 我应该在罐子里的META-INF/MANIFEST文件中添加一些额外的行吗?
  4. 我是否应该期望oracle阻止我的应用程序在这种警告级别的jvm上运行?

我的JNLP文件是这样的文字:

<?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" /> …
Run Code Online (Sandbox Code Playgroud)

java jnlp applet jar-signing java-ee

5
推荐指数
1
解决办法
1万
查看次数