JNLP w / jdk1.7.0_51;应用被安全设置阻挡了

时间:2014-02-26 20:38:09

标签: java

我试图将现有的JNLP应用程序从Java 1.6.0_45升级到Java 1.7.0_51。我遇到了很多障碍,所有这些障碍都与新增强的Oracle安全性有关。

我的理解是,为了在本地网络上运行由我们的本地开发人员开发的应用程序,我们需要由受信任的CA签署的应用程序JAR。

这是我到目前为止所做的事情:

  • 使用openssl
  • 创建了受信任的CA.
  • 创建证书并使用Root CA的密钥签名证书
  • 将根证书和签名证书导入密钥库,并使用带有jarsigner的密钥库对所有客户端JAR进行签名,包括使用位于JNLP-INF / APPLICATION.JNLP中的JNLP文件的应用程序JAR
  • 将根CA的证书和签名证书加载到%JAVA_HOME \ jre \ lib \ security \ cacerts
  • 使用jarsigner验证所有应用程序JAR都已正确签名且没有错误(例如,它知道可信任的证书链或其所称的任何内容)
  • 使用"标记应用程序JAR和JNLP文件:权限:所有权限"
  • 将Java控制面板中的安全设置缩小到" medium"
  • 清除Java控制面板中的临时Internet文件
  • 在"例外网站列表"
  • 中添加了一个例外

现在我明白了:

a generic Application Blocked by Security Settings dialog

我尝试使用 javaws -verbose 和JNLP文件执行应用程序,但它根本没有显示任何内容。我在Java控制面板中将日志记录调到最大值。

在这一点上,我想出了为什么这个应用程序不会运行的想法。正如我之前所说,我们在公司内部网上运行这台机器;我们真的不在乎认证JAR的来源。我们执行需要应用程序在沙箱外运行。

如果有任何方法可以让网站开始吐出任何可能有用的东西,那么我全心全意。

2 个答案:

答案 0 :(得分:2)

检查您的代码库参数。

jnlp文件的codebase参数必须与jnlp文件引用的jar资源的manifest.mf文件的de codebase参数相同。

示例:

file.jnlp

<jnlp codebase="https://myserver/mydirectory"
...
<resources>
...
        <jar href="https://myserver/mydirectory/myJar.jar" main="true"/>
...

myJar.jar的manifest.mf

Codebase: https://myserver/mydirectory

答案 1 :(得分:0)

考虑这个常见问题:

http://www.java.com/en/download/faq/signed_code.xml

TL; DR?他们改变了在某些环境中运行Java的安全模型。

在我的组织中,我们必须对IE安全设置进行调整。