我正在尝试将现有的JNLP应用程序从Java 1.6.0_45升级到Java 1.7.0_51 . 我遇到了很多障碍,所有这些障碍都与新增强的Oracle安全性有关 .
我的理解是,为了通过我们的本地开发人员开发的本地网络运行应用程序,我们需要由受信任的CA签署的应用程序JAR .
这是我到目前为止所做的:
-
使用openssl创建了受信任的CA.
-
创建了证书并使用Root CA的密钥对证书进行了签名
-
将根证书和签名证书导入密钥库,并使用密钥库和jarsigner签署所有客户端JAR,包括应用程序JAR和JNLP-INF / APPLICATION.JNLP中的JNLP文件
-
将根CA的证书和签名证书加载到%JAVA_HOME \ jre \ lib \ security \ cacerts
-
使用jarsigner验证所有应用程序JAR都已正确签名并且没有错误(例如,它知道可信任的证书链或其所谓的)
-
用"Permissions: all-permissions"标记应用程序JAR和JNLP文件
-
将Java控制面板中的安全设置降低到"medium"
-
清除Java控制面板中的临时Internet文件
-
为"Exception Site List"添加了一个例外
现在我明白了:
.
我尝试使用 javaws -verbose 和JNLP文件执行应用程序,但它根本不显示任何内容 . 我在Java控制面板中将日志记录调到最大值 .
此时,我跑了 . 正如我之前所说,我们关心认证JAR的来源 . 我们 do 需要应用程序在沙箱外运行 .
如果有任何方法可以让网络开始吐出任何可能有用的东西,我会全力以赴 .
2 回答
检查您的codebase参数 .
jnlp文件的codebase参数必须与jnlp文件引用的jars资源的manifest.mf文件的de codebase参数相同 .
例:
file.jnlp
myJar.jar的manifest.mf
考虑这个FAQ:
http://www.java.com/en/download/faq/signed_code.xml
TL; DR?他们改变了在某些环境中运行Java的安全模型 .
在我的组织中,我们必须在IE安全设置中进行调整 .