我正在部署JavaFX应用程序,但我不太确定需要签名的内容和内容。以下是我的想法:
- 安装文件 这显然需要签署。
- 启动应用程序的EXE: 我认为这需要签名,虽然感觉有点好笑,因为它不是我的代码。
- 我的JAR文件:我认为这些也需要签名,但我不确定如果我没有发生任何可怕的事情。
- 我从互联网上抢走的图书馆JAR:我觉得我不应该签署这些内容。有什么理由吗?
- Java运行时: 我猜这里没有理由签名,如果我这样做,我可能会违反某些协议。
- JNLP文件: 不使用这个,没理由碰这个。
我是否正确看过这个?我是否正在签署正确的文件?
答案 0 :(得分:4)
我的一个朋友有一个说法"它不是你做的......它是你在法庭上可以证明的。 "
在这方面,我建议你从法律的角度来看待这个问题,并假设它可以适用的最坏情况;即,在有人篡改您的软件后,您将在法律上承担责任。
数字签名专门针对这些类型的问题而设计。
在这方面,让我们将你的答案分成两个不同的分类部分:
您即将发布的软件 - 包括您的jar,jnlp,捆绑的.exes等。
其他人发布的软件。 - 包括您使用的所有内容,以使您的系统正常运行。 (jre,libs)
使用此类内容时,确保您使用lib制造商发布的任何内容的正版副本是个好主意。使用他们的校验和/签名/等。根据需要验证和验证其软件完整性。您必须阅读他们的责任和免责声明,如果他们没有自己提供。
一般来说,当涉及到除您自己以外的软件来源时,尽可能少地放置信任是个好主意。不幸的是,存在许多受损或恶意的库,这些库实际上存在安全风险。
确保您发布经过外部发行人认证的已下载的lib并且因此无法对其中检测到的任何恶意代码负责,这始终是一个好主意。
回答你的问题......这实际上取决于客户端点以及你因为他们提供安全风险而被起诉的可能性(我建议你总是期望这是100%)。如果您要承担损害赔偿责任......您需要相应地继续处理。
简而言之......对这个问题的最佳答案是尽可能在发生最坏情况时尽力掩盖自己。
答案 1 :(得分:0)
您的应用程序是否需要提升权限?如果安装程序以Windows为目标,您希望将应用程序安装到Program Files,则需要对安装程序进行签名。没有它,Windows将在权限升级请求期间提供黄色横幅。
所以 - 签署安装程序。
理想情况下,启动应用程序的exe也应该签名。但对于Java应用程序,这可能是一个静音点。签署exe很容易,我还是会这样做的。
签名启动器exe - 可选,但我会这样做
Jar文件。这是一个有趣的,取决于你的目标是什么。即,操作系统和最终用户可能不会意识到您的Jar的签名或未签名的性质。因此,您可能需要自己验证jar的完整性。见https://docs.oracle.com/javase/tutorial/deployment/jar/signindex.html 也许启动器应用程序可以在启动步骤之前执行完整性检查?
Library jars ,与上面的情况类似,如果你想确保没有人在你的应用程序或某个这样的用例中删除了一个diff jar,你需要自己验证这个。
Java运行时如果您发货,这是否已由Oracle或您的JVM供应商签署?