gpt4 book ai didi

java - 如何将 Permissions 和 Codebase 属性放入第三方 jar 的 list 中?

转载 作者:搜寻专家 更新时间:2023-11-01 03:53:10 25 4
gpt4 key购买 nike

Java™ SE Development Kit 7, Update 25 (JDK 7u25) 中所述,如果使用 Java Web Start 部署的应用程序的 list 文件不具有 Preventing RIAs from Being Repurposed 中描述的权限和代码库属性,则会在控制台中打印一条警告.

对于我的 JAR,添加属性是微不足道的;对于没有数字签名的第三方 jar 来说甚至是微不足道的:修改 list 并签名(与我的 JAR 相同)。如果我有第三方数字签名的 jar 怎么办?似乎在验证过程中使用了整个 list 文件的哈希,因此可能无法在不使使用 jarsigner—JAR Signing and Verification Tool 应用的签名无效的情况下修改 list 。 .

这样对吗?有什么解决办法吗?

最佳答案

我为此制作了一个小 Ant 脚本。这个想法很简单:

  • 每个 jar

    • 在临时目录中提取内容
    • 重新压缩排除 *.RSA 和 *.SF 文件(同时添加权限)
    • 用我自己的证书签名

    <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>

关于java - 如何将 Permissions 和 Codebase 属性放入第三方 jar 的 list 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18661170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com