正如Java™ SE Development Kit 7, Update 25 (JDK 7u25)所述, 如果使用Java Web Start部署的应用程序的清单文件没有Preventing RIAs from Being Repurposed中描述的权限和代码库属性,则会在控制台中打印警告。
对于我的JAR,添加属性是微不足道的;对于没有经过数字签名的第三方罐子来说,这甚至是微不足道的:修改清单和标志(与我的JAR相同)。 如果我有第三方数字签名的罐子怎么办?似乎整个清单文件的哈希值在验证过程中使用,因此可能无法在不使用jarsigner—JAR Signing and Verification Tool应用的签名失效的情况下修改清单。
这是对的吗?有没有解决方案?
答案 0 :(得分:0)
<property name="keystore" value="../keystores/store/keystore.jks" />
<property name="storetype" value="jks" />
<property name="storepass" value="password" />
<property name="keypass" value="${storepass}" />
<target name="unsign-all">
<foreach target="_re-jar" param="currentFile" parallel="false">
<path>
<fileset dir="WebContent/dir_contains_jars" casesensitive="yes">
<include name="**/*.jar" />
</fileset>
</path>
</foreach>
<move todir="WebContent/dir_contains_jars" overwrite="true">
<fileset dir="WebContent/dir_contains_jars.tmp" casesensitive="yes">
<include name="**/*.jar" />
</fileset>
</move>
<delete dir="WebContent/dir_contains_jars.tmp" />
</target>
<target name="sign-all">
<apply executable="C:\Program Files\Java\jdk1.7.0_45\bin\jarsigner">
<arg line="-keystore ${keystore} -storetype ${storetype} -storepass ${storepass} -keypass ${keypass}" />
<srcfile />
<arg line="alias_name" />
<fileset dir="WebContent/dir_contains_jars" casesensitive="yes">
<include name="**/*.jar" />
</fileset>
</apply>
</target>
<target name="_re-jar">
<basename property="filename" file="${currentFile}" />
<jar destfile="WebContent/dir_contains_jars.tmp/${filename}">
<zipfileset src="${currentFile}">
<exclude name="META-INF/**.RSA" />
<exclude name="META-INF/**.SF" />
</zipfileset>
<manifest>
<attribute name="Permissions" value="all-permissions" />
<attribute name="Codebase" value="*" />
<attribute name="Application-Name" value="jnlpApplicationName" />
</manifest>
</jar>
</target>