我正在开发一个项目,客户端现在正在从 Java 6 迁移到 Java 8。我们在项目中下载一个 jnlp 文件来运行 java 应用程序。在 Java 6 中,我们没有遇到任何问题,但现在迁移到 Java 8 后,我们面临安全问题,因为我们无法再使用自签名 jar。客户给我们提供了一份证书。 我的问题是如何在 Java 8 中运行该 jnlp 文件? 我尝试对我们在 jnlp 文件中使用的 jar 进行签名。我使用了Java提供的cacerts keystore 。我运行以下命令将证书添加到 Java keystore :
keytool -import -keystore cacerts -alias myalias -file "mycertificate"
jarsigner -keystore cacerts myjar myalias
现在,我在执行此操作时收到以下错误 jarsigner:找不到证书链:myalias
我应该怎么做才能使 jnlp 在机器中运行,因为我什至无法签署我们使用的 jar? jnlp模板是这样的:
<information>
<title>${appTitle}</title>
<vendor>Vendor</vendor>
<homepage href="${codeBase}" />
<description>Java App</description>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.6+" />
<jar href="${jarPath}" />
<#if jarDependenciesPath??>
<#list jarDependenciesPath as jarDependencyPath>
<jar href="${jarDependencyPath}" />
</#list>
</#if>
</resources>
<application-desc
name="${appTitle}"
main-class="${mainClass}"
width="300"
height="300">
<#list args as arg>
<argument>${arg}</argument>
</#list>
</application-desc>
最佳答案
看来你的证书不好。使用好的证书。
或者,您可以在 JAVA 控制台中添加异常(exception)来绕过安全性。
关于java - 迁移到 Java 8 后运行 jnlp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49023828/