需要签署什么?

我正在部署一个JavaFX应用程序,我不太确定哪些内容需要签名。 这是我的想法:

- 安装文件:这显然需要签名。

- 启动应用程序的EXE:我认为这需要签名,但它感觉有点有趣,因为它不是我的代码。

- 我的JAR文件:我相信这些也需要签名,但我不确定是否会发生任何可怕的事情,如果我不这样做。

- 我从互联网上抓取的图书馆JAR:我不觉得我应该签署这些。 有什么理由吗?

- Java运行时:我猜这是没有理由的,如果我这样做,我可能会违反一些协议。

- JNLP文件:不使用这个,没有理由去触摸它。

我有正确的看过这个吗? 我正在签署正确的文件吗?


我的一位朋友有一句话:“这不是你所做的......这是你可以在法庭上证明的。”

在这方面,我建议你从法律的角度来看待这个问题,并假设它可以应用的最糟糕的环境; 即在您篡改您的软件后,您变得依法负责。

数字签名专为这些类型的问题而设计。

在这方面,让我们将您的答案分成两个不同的分类部分:

  • 你正在发布的软件 - 包括你的jar,jnlp,捆绑的.exes等等。

  • 所有这些都必须加以签名,以确保您不会受到任何未经授权的使用自己的代码进行调试的影响。 无论您是否已发布该jnlp都无关紧要。 如果有人生成了侵入性病毒,并且可以追溯到您,那么未能验证您自己发布的那个jnlp版本将不会好。
  • 其他人发布的软件。 - 包含您为使系统正常工作而使用的所有内容。 (jre,libs)

  • 当使用这样的东西时,最好确保你使用的是lib制造商发布的任何东西的真实副本。 使用他们的校验和/签名/等。 根据需要验证和验证其软件完整性。 你必须阅读他们的责任和免责声明,如果他们没有提供自己的声明。

  • 一般来说,对于除您以外的软件来源,尽可能少放置信任是一个好主意。 不幸的是,那里存在许多被盗用或恶意的库存,实际上存在安全风险。

  • 确保你发布一个由外部发行者认证的下载库是一个不错的主意,因此不能对其中检测到的任何恶意代码负责。

  • 要回答你的问题......这实际上取决于客户端和你被起诉提供安全风险的可能性(我建议你总是期望这是100%)。 如果您需要承担赔偿责任......您需要相应处理。

    总之...对这个问题最好的答案就是尽最大可能在最坏的事件发生时覆盖自己。


    你的应用程序是否需要提升特权 如果安装程序的目标是Windows,您希望将该应用程序安装到Program Files,那么您的安装程序需要进行签名。 没有它,Windows将在特权升级请求期间提供黄色标语。

    所以 - 签署你的安装程序。

    理想情况下,启动应用程序的exe也应该签名。 但对于Java应用程序来说,这可能是一个静音点。 对exe文件签名很简单,反正我也是这么做的。

    Sign launcher exe - 可选,但我会这样做

    Jar文件。 这很有趣,取决于你的目标是什么。 也就是说,操作系统和最终用户可能不会意识到Jar的签名或未签名的性质。 因此,您可能必须自己验证jar的完整性。 请参阅https://docs.oracle.com/javase/tutorial/deployment/jar/signindex.html也许启动程序可以在启动步骤之前执行完整性检查?

    库jar ,类似于上面的例子,如果你想确保没有人将差异jar放入你的应用程序或者这样的用例中,你需要自己验证它。

    Java运行时如果您正在发布这个版本,这是否已经由Oracle或您的JVM供应商签署?

    链接地址: http://www.djcxy.com/p/92619.html

    上一篇: What needs to be signed?

    下一篇: How to store a large graph on disk