签署 jnlp 以消除安全警告

2024-02-19

我正在一家公司进行开发,其中 jnlp 文件用于启动基于 swing Web 的 java 应用程序。它有大量的 jar 文件被下载到客户端的 jvm 缓存中。当我将 jvm 更新到当前最新版本(内部版本 1.7.0_45-b18)时,当我尝试运行 jnlp 文件时,我开始看到下面的安全警告:

在我看到这个错误并阅读这篇关于从 oracle 站点签名 jnlp 文件的文章之后(签署 JNLP 文件 https://blogs.oracle.com/thejavatutorials/entry/signing_a_jnlp_file) 然后我在项目中添加了三件事:

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

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

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

  1. 我是否应该尝试对所有第三方 jar 进行签名?如果是这样,我该如何使用 Ant 命令来做到这一点?如何提取第三方 jar 并在其中添加 JNLP-INF 文件夹,然后使用 Ant 将其重新打包为 jar?
  2. 我是否也应该在决赛上签字我的应用程序.ear 文件,其中包含 JNLP-INF 子文件夹。此ear 文件部署到jboss 服务器吗?
  3. 我应该在 jar 中的 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" />
    <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" />

感谢您的任何帮助/评论/头脑风暴。


这个 JNLP 似乎需要签名,因为java-vm-args但要意识到大多数与内存相关的选项都可以通过 JNLP 指定的方式指定not需要签名。我建议你尝试这种方式。

Edit

JNLP 是 Java 插件的一部分,它已从浏览器中删除,并在 Java 9 周围被 Oracle 弃用。使用其他方法启动应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

签署 jnlp 以消除安全警告 的相关文章

随机推荐