代码之家  ›  专栏  ›  技术社区  ›  sorin

从命令行启动java应用程序时,是否可以防止数字签名警告?

  •  3
  • sorin  · 技术社区  · 15 年前

    我在找一个 命令行解决方案

    另外,我不希望禁用此警告 任何 因为这可能会带来安全风险。

    不确定是否有用,但我知道签名的“name”、“publisher”和“from”字段的值。

    screenshot of java digital signature warning

    请确定,我不是在问如何签署这份申请。

    更新1

    我想解决办法是 keytool 从命令行导入证书,但由于某些原因,无法正确导入证书,因为在此之后证书不会出现在控制面板小程序中,并且应用程序仍然需要它。

    keytool -importcert -file my.cer -alias alf2 -storepass changeme -noprompt

    是不是跟违约有关 keystore ,如何确保导入到正确的密钥库?

    更新2

    Windows 7 具有 Java 6 : keytool -importcert -file my.cer -keystore "%USERPROFILE%\AppData\LocalLow\Sun\Java\Deployment\security\trusted.certs" -storepass "" -noprompt -v

    我发现Sun未能在文档中指定默认密钥库的真实位置,并且默认密码为空。

    但这并不是结束,因为在自动化用户帐户上运行时失败了,失败的原因是该用户还没有密钥库,并且命令行工具 无法使用空密码创建密钥库,请求至少6个字符。 see Sun's forum tread...

    5 回复  |  直到 15 年前
        2
  •  1
  •   Stephen C    15 年前

    有两种方法:

    • 让软件供应商重新签发一份签名正确的软件。“更多信息”链接应该告诉您 为什么? 无法验证签名,但最可能的原因是签名是使用自签名CA证书创建的,或者是使用已过期的证书创建的。(如果供应商不帮忙,您可以用自己的证书放弃JAR文件。)

        3
  •  1
  •   Johnbabu Koppolu    15 年前

    答案是“否”,除非你让你的应用程序签名,或者用户手动将发布者添加到“受信任”列表中。

    here

        4
  •  0
  •   Giors    14 年前

    如果证书存储实际上不存在,不知道是否仍然是windowsxpkeytool请求密码,所以您应该在导入证书之前手动创建或从某处复制存储。用户存储区没有密码。

        5
  •  -1
  •   Niekam    14 年前

    我认为你应该创建一个文件例如我的政策.policy在java.home/lib/security文件向您签署的代码授予所有权限,并将此文件添加到java.security文件(例如,行下的java.policy策略路径)此警告窗口将不再提示