【问题标题】:How to use a provided keystore to sign a jar file如何使用提供的密钥库对 jar 文件进行签名
【发布时间】:2012-10-26 14:11:10
【问题描述】:

我的客户给了我一个用于签署 Java 小程序 jar 文件的密钥库。我从中导出了一个 .cer 文件,然后将其导入 cacerts,但我不断收到“找不到证书链”错误。它还说“别名必须引用包含私钥和相应公钥证书链的有效 KeyStore 密钥条目。”

我在下面尝试了 Gaston 的建议,结果如下:

jarsigner -keystore "D:\My Documents\keystore\MyKeyStore.jks" -storepass mypass -signedjar my_signed_jar.jar" unsigned.jar myalias

Warning:
The signer's certificate chain is not validated.

【问题讨论】:

    标签: java security applet signing


    【解决方案1】:

    整个情况无效。

    1. 您应该使用自己的私钥签署 JAR 文件,而不是其他人的。

    2. 您的客户通过泄露其私钥犯下了重大安全漏洞。

    3. 您提到的有关签名者的证书链未验证的问题完全是客户端的问题。他提供了证书:其有效性完全取决于他。

    不是你的问题,但根本不是真正的问题,因为整个情况都是无效的。您应该使用自己的证书签署自己的代码。

    【讨论】:

      【解决方案2】:

      如果您只想从密钥库中对 jar 进行签名,则应在命令行中运行以下命令:

      %JAVA_HOME%\bin\jarsigner -keystore YOUR_KEY_STORE.ks -storepass KS_PASS YOUR_JAR KS_ALIAS

      希望对你有所帮助。

      【讨论】:

      • 感谢您的回复!我试过了,结果如下: jarsigner -keystore "D:\My Documents\keystore\ProvidedKeyStore.jks" -storepass mypass -signedjar my_signed_jar.jar" unsigned.jar myalias 警告:签名者的证书链未经验证。跨度>
      • 如果您使用 JDK 7,请立即尝试使用 JDK 6 版本(也可以尝试使用 32 位和 64 位版本)。
      【解决方案3】:

      我从中导出了一个 .cer 文件,然后将其导入到 cacerts 但我 不断收到“找不到证书链”错误。

      当然,不会找到该链 :) 您不应该导出它,因为要对 jar 签名,但您必须使用原始密钥库密钥 - 生成证书的密钥...

      如果您拥有密码等所有权限,则应使用客户端提供给您的原始密钥库密钥对 jar 进行签名。接下来你必须使用jarsigner 类似的常用命令

      jarsigner -keystore C:\working\mystore -storepass myspass
            -keypass dukekeypasswd MyJarFile.jar duke
      

      附言>

      如果有帮助请报告

      【讨论】:

        猜你喜欢
        • 2023-04-05
        • 1970-01-01
        • 2011-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-07
        • 1970-01-01
        相关资源
        最近更新 更多