0

我创建了一个 Tornadofx 应用程序,并希望将其部署到生产环境中。为此,我考虑了两种选择:

  1. Fxlauncher

  2. Java 网页启动

Fxlauncher 似乎很容易使用和部署,只需要 gradle 配置和命令。
但我主要关心的是它是否足够安全?
例如,在 Java web start 中,我正在阅读文档并发现:

签署 Java Web Start 中使用的 JAR 文件 Java Web Start 强制实施安全沙箱。默认情况下,它只授予任何应用程序(包括应用程序客户端)最低权限。因为 Java Web Start 应用程序可以很容易地下载,所以 Java Web Start 可以防止可能通过网络访问的潜在有害程序。如果应用程序需要比沙盒允许的权限级别更高的权限,则需要权限的代码必须位于已签名的 JAR 文件中。当 Java Web Start 下载此类签名的 JAR 文件时,它会显示有关用于签署 JAR 的证书的信息,并询问您是否要信任该签名的代码。如果您同意,代码将获得提升的权限并运行。如果您拒绝签名代码,Java Web Start 不会启动下载的应用程序。

基本上,jar 的签名是使用 Java web start 和 JNLP 时的关键问题之一;但是对于 Fxlauncher,我找不到任何这样的要求或标准来做到这一点。
那么 Fxlauncher 是如何处理此类安全问题的呢?
目前,使用 fxlauncher,我能够从/向我的客户机器读取/写入文件。没有jar签名可以吗?

仅供参考,我没有实际使用过 Java web start,只是在阅读 Oracle 指南。
参考文献:

对 Java Web Start 中使用的 JAR 文件进行签名

了解签名和验证

4

3 回答 3

2

FLAuncher 最终使用javapackager实用程序创建了一个可安装的本机应用程序。如果你愿意的话,你可以说安全问题从 JVM 上移了一级到操作系统。因此,您应该像对待任何其他本机应用程序一样对待使用 FXLauncher 打包的应用程序。

Gradle 插件目前不公开签署您的应用程序包的能力,但您可以单独执行此操作,直到插件赶上。签署应用程序可以让您的最终用户相信您就是您所说的那个人,并通过将安全警告替换为显示您的身份的对话框来改善安装体验。

底线:当您安装任何本机应用程序时,您基本上在某种程度上受制于开发人员,这对于 FXLauncher 打包应用程序同样如此。

于 2017-07-05T08:09:42.663 回答
1

您可以运行 JNLP / WebStart 命令来启动您签名的应用程序。您需要使用相同的证书签署任何库,或者将它们隔离到单独的 .jnlp 文件中。

就本机安装体验而言,请在此处获取签名和沙盒化的 WebStart 应用程序:

https://www.bekwam.net/sortme/sortme.jnlp

由于 WebStart 插件不再允许您直接启动应用程序,因此您可以通过执行此类操作来捕捉原生运行体验。

$ alias sortme='javaws https://www.bekwam.net/sortme/sortme.jnlp'

这允许您从命令行键入“sortme”并运行应用程序。如果你想更进一步,你可以添加一个名为 sortme.desktop 的文件(适用于 Ubuntu)。这使您可以双击一个图标或从启动器访问它。

[Desktop Entry]
Version=1.0
Type=Application
Name=Sort Me
Exec=/opt/jdk1.8.0_141/bin/javaws https://www.bekwam.net/sortme/sortme.jnlp
StartupNotify=false
OnlyShowIn=Unity;
X-BAMFGenerated=true

此部署允许您利用内容交付网络 (CDN) 从超快速下载服务器提供 JNLP 和 JAR 文件。您在安装脚本中提供“最后一英里”。如果可行,您将获得签名应用程序甚至沙盒版本的所有保证。

于 2017-07-25T21:39:53.237 回答
0

肯定存在安全问题。

您可以使用我的衍生框架update4j,它与 fxlauncher 非常相似,但更胜一筹。它具有签名验证功能。

于 2018-06-25T06:01:56.380 回答