这个问题确实提出了一些有效的观点,thkala 为受信任的权威机构颁发的 CA 的价值提供了很好的辩护。
但是为什么我们需要 CA 来处理 JNLP 而不是常规的可执行 JAR 文件呢?我认为原因是 JNLP 旨在从浏览器启动。JNLP 文件是在沙箱中与浏览器一起运行的小程序的替代品——理论上可以避免对您的计算机造成任何损害。用户只需访问一个页面就可以启动在小程序中运行的 jar 文件。同样,只需单击一个按钮即可启动 JNLP。在 Chrome 中,我被要求首先保存 JNLP。但在 IE 或 Firefox 中,我会看到一个启动按钮或常规 Web 链接——它看起来像网页中的任何其他按钮或链接——然后单击即可运行程序。这比下载可执行文件然后运行它要简单一些。
另一方面,可执行 JAR 文件可以通过多种方式安装或运行。例如,它们通常与 MRI 一起打包在 CD 上,因为一些 MRI 查看软件在 JVM 上运行,并且患者或医生需要启动定制软件来查看 MRI。但是这个软件没有得到“安装”。您只需从 CD 运行它。
另一方面,JNLP 可以更像安装程序而不是独立程序。我已经能够让他们创建桌面快捷方式并进行文件关联。从用户的角度来看,我的 JNLP 应用程序感觉就像一个具有自己的图标和文件类型的本机程序。由于它在浏览器中运行得如此隐蔽,并且可以不受限制地访问客户端 PC,因此让它“签名和受信任”可以让用户在运行它时感觉更安全。
从历史上看,我相信这就是 JNLP 和小程序得到签名的原因。我相信这次签约的实用价值已经到期。
首先,从 CA 签署您的应用程序需要花费数百美元,因此许多公司都跳过了这一点。有一些合作的应用程序运行自签名代码,用户只知道在浏览器发出警告后点击“接受”按钮。
更重要的是,最近针对 Java 的安全更新集中在修补后门,这些后门允许未签名的代码离开沙箱并执行已签名的 applet 或 JNLP 可以执行的所有操作。似乎每次甲骨文修补沙盒的出路时,都会有人找到不同的出路。最好的解决方案是让运行时始终提示允许运行 Java 小程序或 JNLP 文件的用户。自签名的 JNLP 文件不仅可以访问本地文件系统和 LAN,而且未签名的 JNLP 也可以。如果用户从 Oracle 获得了最新的安全更新(当然,大多数人没有),并且在发现下一个从沙箱滑出的巧妙方法之前,沙箱模型确实按预期工作。但是对于大多数用户来说,大多数时候,sanbox 模型并没有按预期工作。我认为是时候让所有 JNLP 文件请求运行权限,并为它们提供与常规 JAR 文件相同的访问权限。
这样我就不必每 6 个月重新创建一次安全证书。