你的 JDK 应该包含名为jarsigner
。该工具可让您免费签署 jar 文件。
1)用于签名的密钥需要位于java密钥库中(默认.keystore
)您可以将密钥导入到您的密钥库中.der
format.
2)您只能签名.jar
files
3)它只会用新签名的文件覆盖旧文件。就像简单的复制一样。除非您的安装程序这样做,否则不会执行签名验证。
此外,并非每个签名都是相同的。例如,如果您尝试注册加密提供程序,则需要 Oracle 签名的签名才能在 Oracle JVM 上运行它。看:https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider.html#Step6 https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider.html#Step6
example:
生成密钥:
keytool -genkey -keyalg RSA -alias key_alias -keystore mystore.keystore -keysize 2048
签署罐子:
jarsigner -keystore mystore.keystore -tsa http://tsa.safecreative.org MyJARFile.jar key_alias_from_keystore
验证签名:
jarsigner -verify jar-file
我不确定这是否能解决我们的问题。总的来说,您需要做的是签署操作系统可执行文件。在这种情况下.exe
and .app
一个可能的解决方案是对应用程序包装器的可执行文件进行签名(如果是 Windows.exe
)。为此,请参阅:https://msdn.microsoft.com/en-us/library/aa387764.aspx https://msdn.microsoft.com/en-us/library/aa387764.aspx
如果您使用基于 Unix 的系统,我会尝试运行 Mono 的签名工具。请参阅“signcode”上的单声道文档(我无法提供链接,没有足够的代表)
这应该会消除“未知发布者”消息,但除非您能让操作系统开发人员签署您的证书,否则将会向用户显示一些消息。