有什么方法可以避免在命令行运行Java应用程序时出现“无法验证应用程序的数字签名”的警告信息?
我正在寻找一个命令行解决方案,它允许在持续集成服务器上启动这样的应用程序,因此我需要一个不需要手动干预的解决方案。
此外,我不希望对任何 应用程序禁用此警告,因为这可能存在安全风险。
不确定是否有帮助,但我知道签名的“名称”、“发布者”和“来自”字段的值。
请确定,我不是在询问如何签署此申请。
更新1
我想解决方案是使用 keytool
从命令行导入证书,但由于某种原因它确实无法正确导入它,因为在此之后它没有出现在控制面板小程序中,并且应用程序仍然需要它。
keytool -importcert -file my.cer -alias alf2 -storepass changeme -noprompt
它是否与默认 keystore
相关,我如何确保导入正确的 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 未能在文档中指定默认 keystore 的真实位置以及默认密码为空的事实。
但这还没有结束,因为当它在自动化用户帐户上运行时它失败了,它失败是因为该用户还没有 keystore 并且因为命令行工具 keytool
不能使用空密码创建 keystore ,要求至少 6 个字符。 see Sun's forum tread...
最佳答案
trusted.certs 文件是基于用户(配置文件)的。使用 keytool 也可以将受信任的根 CA 添加到“cacert”文件,其中存储了 java 的默认受信任 CA。 XP 上的 cacert 文件位置(取决于 Java 版本):C:\Program Files\Java\jre6\lib\security
更多细节在这里:
默认密码是:changeit
关于java - 当我从命令行启动 java 应用程序时,我可以防止数字签名警告吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3750274/