我正在部署JavaFX应用程序,但我不太确定需要签署什么和不需要签名。这是我的想法:
- 安装文件:显然需要签名。
- 启动应用程序的EXE:我认为这需要签名,虽然感觉有点好笑,因为它不是我的代码。
- 我的JAR文件:我相信这些也需要签名,但我不确定如果不这样做会发生什么可怕的事情。
- 我从互联网上抓起的图书馆JAR:我不觉得我应该签署这些。有什么理由吗?
- Java运行时:我猜我没有理由签署这个,如果我这样做,我可能会违反某些协议。
- JNLP文件:不使用此,没理由触及此。
我看得出来了吗?我签署了正确的文件吗?
我的一个朋友说“这不是你做的......这是你在法庭上可以证明的。”
在这方面,我建议你从法律的角度来看待这个问题,并假设它可以适用的最坏情况;即,在有人篡改您的软件后,您将在法律上承担责任。
数字签名专门针对这些类型的问题而设计。
在这方面,让我们将您的答案分成两个不同的分类部分:
要回答你的问题......这实际上取决于客户端点以及你因为他们提供安全风险而被起诉的可能性(我建议你总是期望这是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,与上面的情况类似,如果你想确保没有人将diff jar放入你的应用程序或某些这样的用例中,你需要自己验证。
Java运行时如果您发货,这是否已由Oracle或您的JVM供应商签署?