繁体   English   中英

如何签署跨平台Java应用程序

[英]How to Sign a Cross-Platform Java App

我有一个用Java编写的应用程序,它将在Mac OS X,Windows和Linux上发布。 目前,我按如下方式为每个平台打包应用程序(但如果需要替代方案,我愿意更改它):

  • Mac OS X:使用Eclipse,转到“文件” - >“导出...”并选择Mac OS X应用程序包
  • Windows:使用Launch4j将jar文件捆绑到exe文件中
  • Linux:使用Jnix将jar文件捆绑到sh文件中

麻烦的是,我开始遇到我的程序不受信任的问题。 谷歌浏览器报告我的应用程序的测试版不是来自受信任的来源,Windows 8 Smartscreen过滤器也是如此。 我的理解是,让这些安全措施相信我的应用程序的唯一方法(如果我想真正分发它肯定是必要的)就是让应用程序签名。 但是,我发现很少有关于如何执行此操作的文档,其中大部分都是针对一个平台的(例如, 告诉我有关Windows 8的签名)。

我的问题是:有没有办法签署我的Java代码一次并自动将我创建的可执行文件签名? 或者我是否必须单独签署每个可执行文件? 如果是后者,是否有一个我可以使用的代码签名权限,或者我是否需要使用不同的组单独签名?

根据ParrotMac的建议,我完成了Digicert的实时聊天 ,并向“大卫”提出了一些问题。 以下是他必须说的内容(为清晰起见而编辑):

我是否对Java代码或最终产品可执行文件进行身份验证?

您需要签署最终产品。

我是否购买了一个证书并将其用于其他平台,还是单独购买?

您可以购买代码签名证书,将其下载到您选择的平台(例如Java jar文件),然后将其重新键入另一个(例如Windows .exes的authenticode),如果您愿意的话。 重新键入是免费的,只要证书有效,您可以根据需要多次为不同平台重新键入证书。 重新密钥时,它不会使您之前的证书无效,只是让您可以为另一个平台下载另一个证书。 您为digicert选择的平台只是它最初键入的平台。

我的平台目标之一是Linux。 有没有Linux代码签名? 或者仅适用于OS X和Windows?

您可以在Linux中使用该证书,您只需使用不同的工具对其进行签名,而不是使用Windows或OS X.

所以你有它。 至少从digicert(我想其他代码认证公司)你可以购买一个证书并免费使用它在多个平台上。 然后,您可以验证最终产品; 除非您以这种方式分发,否则无需验证您的原始jar文件。

但是,我确实发现如果你想要通过Windows 8,你必须获得更安全的代码签名。

代码签名是否可以通过Windows 8的Smartscreen过滤器?

您需要EV代码签名证书才能通过Windows 8 Smartscreen筛选器。 EV的成本更高,但主要是由于它带来的额外验证。 您可以像使用非EV证书一样使用EV执行相同的操作。

为了更好地衡量,我询问是否需要证书才能将其发送到Mac OS X App Store或其他商店。

如果我想在Mac OS X App Store或其他商店中分发此跨平台应用程序,我是否需要证书? 如果是这样,它是否是相同的证书?

对于Google的Apps商店或Mac App Store等商店,您需要使用受信任的证书对您的软件进行签名。 但是,您可能希望查看特定的商店要求,以确定您需要的确切内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM