Sha*_*oux 11 java swing code-signing certificate
我使用Swing(myProg.jar)创建了一个Java桌面应用程序.我目前将我的应用程序打包为我的Mac用户的.app,我使用InnoSetup为我的Windows用户制作一个setup.exe文件.我还提供了一个myProg.exe包装器来启动myProg.jar.
现在,为了摆脱我的用户计算机上的SmartScreen和其他保护措施,我认为我需要签署我的应用程序.但是我读的越多,它对我来说就越混乱.
任何人都可以为我澄清以下几点吗?
1)我需要什么样的证书?无论如何要让它免费或至少便宜吗?
2)我需要准确签署什么?我应该签署myProg.jar文件,.app文件吗?setup.exe?myProg.exe包装器?他们都是?
3)已解决 -当我更新程序并用myProg.jar的新版本替换myProg.jar时,它将如何工作?
非常感谢!
您的 JDK 应该包含名为 的工具jarsigner。该工具可让您免费签署 jar 文件。
1)您用于签名的密钥需要位于java密钥库中(默认.keystore)您可以从格式将密钥导入到密钥库中.der。
2)您只能对.jar文件进行签名
3)它只会用新签名的文件覆盖旧文件。就像简单的复制一样。除非您的安装程序这样做,否则不会执行签名验证。
此外,并非每个签名都是相同的。例如,如果您尝试注册加密提供程序,则需要 Oracle 签名的签名才能在 Oracle JVM 上运行它。请参阅: https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider.html#Step6
例子:
生成密钥:
keytool -genkey -keyalg RSA -alias key_alias -keystore mystore.keystore -keysize 2048
Run Code Online (Sandbox Code Playgroud)
签署罐子:
jarsigner -keystore mystore.keystore -tsa http://tsa.safecreative.org MyJARFile.jar key_alias_from_keystore
Run Code Online (Sandbox Code Playgroud)
验证签名:
jarsigner -verify jar-file
Run Code Online (Sandbox Code Playgroud)
我不确定这是否能解决我们的问题。总的来说,您需要做的是签署操作系统可执行文件。在这种情况.exe下和.app
一个可能的解决方案是对应用程序包装器的可执行文件进行签名(如果是 windows .exe)。为此,请参阅:https://msdn.microsoft.com/en-us/library/aa387764.aspx
如果您使用基于 Unix 的系统,我会尝试运行 Mono 的签名工具。请参阅“signcode”上的单声道文档(我无法提供链接,没有足够的代表)
这应该会消除“未知发布者”消息,但除非您能让操作系统开发人员签署您的证书,否则将会向用户显示一些消息。