4

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

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

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

我的问题是:有没有办法对我的 Java 代码进行一次签名并自动对我创建的可执行文件进行签名?还是我必须单独签署每个可执行文件?如果是后者,是否有一个我可以使用的代码签名机构,或者我必须让它与不同的组分别签名?

4

1 回答 1

4

在ParrotMac的建议下,我完成了 Digicert 的实时聊天,并向“大卫”提出了其中一些问题。这是他不得不说的(为清楚起见进行了编辑):

我是验证 Java 代码还是最终产品可执行文件,还是两者都验证?

您将要签署最终产品。

我是购买一张证书并将其用于其他平台还是单独购买?

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

我的平台目标之一是 Linux。有Linux代码签名之类的东西吗?还是仅适用于 OS X 和 Windows?

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

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

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

代码签名能否通过 Windows 8 的 Smartscreen 过滤器?

您需要 EV 代码签名证书才能通过 Windows 8 Smartscreen 过滤器。电动汽车的成本确实更高,但主要是由于它附带的额外验证。您可以对 EV 执行与使用非 EV 证书相同的操作。

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

如果我想在 Mac OS X App Store 或其他商店分发这个跨平台应用程序,我需要证书吗?如果是,是同一个证书吗?

对于 Google 的应用商店或 Mac App Store 等商店,您需要让您的软件由受信任的证书签名。但是您可能希望查看特定商店的要求以确定您需要什么。

于 2013-05-21T02:39:54.563 回答