OS X 上 Java Web Start 应用程序的身份不明的开发人员

Posted

技术标签:

【中文标题】OS X 上 Java Web Start 应用程序的身份不明的开发人员【英文标题】:Unidentified developer for Java Web Start application on OS X 【发布时间】:2013-11-15 01:15:17 【问题描述】:

在 Mac OS X 10.9 上,签名的 Java Web Start 应用程序默认被阻止并显示以下消息:

"application.jnlp" can't be opened because it is from an unidentified developer.

我知道可以削弱安全检查以允许任何应用程序运行,但这需要最终用户的手动干预。

是否可以对 Java Web Start 应用程序进行“签名”,使其被识别为来自已识别的开发人员?

谢谢

【问题讨论】:

【参考方案1】:

遗憾的是,Apple 在 macOS Big Sur 版本中删除了 System Preferences -> Security & Privacy 下的 Anywhere 选项。

当您收到以下消息时,以下是关于如何为未签名的 jnlp 文件覆盖 MacOS 安全设置 的非常简单的方法:

“file-name.jnlp”无法打开,因为它来自身份不明的开发人员。 macOS 无法验证此应用是否没有恶意软件。

按照以下步骤覆盖系统安全设置:

    确保 jnlp 文件已下载(通常在 Downloads 文件夹中) 在 Finder 中找到文件并使用 Control + 单击,然后打开 您应该会通过打开按钮获得稍微不同的对话框,允许您覆盖系统安全设置并执行文件。

Reference

另外你可能需要download OpenWebStart for macOS

【讨论】:

【参考方案2】:

Apple 似乎确实支持 webstart 的签名——但不是直接的。您必须将其捆绑在档案中。请参阅this页面底部的注释:

您可以使用 codesign 实用程序对 JNLP 文件进行签名,这会将代码签名作为扩展属性附加到 JNLP 文件。要保留这些属性,请将 JNLP 文件打包为 ZIP、XIP 或 DMG 文件。请谨慎使用 ZIP 格式,因为某些第三方工具可能无法正确捕获所需的扩展属性。

另请注意,非 Apple 开发人员不支持 XIP anymore:

重要提示:从 macOS Sierra 开始,仅扩展 Apple 签名的 XIP 档案。一直在使用 XIP 存档的开发人员将需要转而使用签名的安装程序包或磁盘映像。

【讨论】:

谢谢,我最终求助于创建一个适当的应用程序包来调用javaws https://example.com/application.jnlp。如果 jnlp 文件在下载时无法再自动执行,则保留它没有意义,即使它已使用其代码签名属性进行压缩。与压缩的 jnlp 相比,app bundle 有一些好处:1. Mac 用户更熟悉它,2. 它显示应用程序图标,以及 3. 当 jnlp 文件演变时无需重新签名。 这个问题是在 3 年后回答的吗?无论如何。我想确认此更改是在 10.8 版中进行的还是作为 2013 年的安全更新进行的?【参考方案3】:

How to sign (dynamic) JNLP files for OSX and Gatekeeper 的答案解决了这个问题,忽略“动态”方面。

您可以codesign -f -s "Developer ID Application: " application.jnlp,但 HFS 资源不会与文件一起通过网络传输。

在 Oracle 找到解决方案之前,如果他们真的解决了 JNLP/Web Start 问题,看起来我们必须找到一种解决方法,让我们开始创建 Mac 应用程序包。

【讨论】:

【参考方案4】:

这似乎在 OS X 10.10 中发生了变化。现在转到 系统偏好设置 -> 安全和隐私 ->(解锁窗口)-> 允许从以下位置下载的应用程序:(选择任意位置)(尝试运行 .jnlp 文件后)您会看到一个选择“仍然运行”。

【讨论】:

【参考方案5】:

在最新的 OSX 版本中,Apple 已将其安全模型更改为仅支持来自 Mac App Store 的应用程序和已确定的开发人员。在大多数情况下,这会阻止 jnlp/java-web-start 应用程序启动。

如果这是受信任的应用程序,您可以通过如下更新系统设置来覆盖这些设置:

系统偏好设置 -> 安全和隐私 ->(解锁窗口)-> 允许从以下位置下载应用程序:(选择任意位置)

在某些情况下,您可能还需要更新 Java 安全首选项

系统偏好设置 -> Java -> 安全 ->(选择中)

调整这些时要小心。这些设置将使您接触到流行的攻击媒介,攻击者可以利用这些攻击媒介利用 Java 运行时(Java 0 天)中的漏洞。

【讨论】:

【参考方案6】:

这是一个相关的帖子。似乎无法绕过安全性“全部允许”解决方法。

OS X 10.8 Gatekeeper and Java applets

来自上述帖子中的 Apple 技术支持。

身份不明的开发者”是指 Mac App Store 以外的来源 或开发者 ID 识别的开发者。请注意,Java 小程序不能 参与开发者 ID 计划。

我正在考虑构建本机应用程序并使用自定义网络协议,而不是类似于在 URI 中看到 skype:// 的 skype。在不久的将来,Apple 似乎不会改变他们对 java applet 的立场。它很可能会变得更加受限,最终就像 ios 上的 flash 一样被禁用。

【讨论】:

谢谢你的链接,我不知道小程序的问题。 在 10.10 中可以绕过它(见我的回答)。

以上是关于OS X 上 Java Web Start 应用程序的身份不明的开发人员的主要内容,如果未能解决你的问题,请参考以下文章

在 Linux 上启动 java web start 应用程序的问题

Java applet无法在Safari 7下打开文件(Mac OS X 10.9)

Parallels desktop:从 OS X(主机)访问本地 IIS Web 应用程序

将域指向在 OS X 服务器上运行的 Web 应用程序(例如 Kitura、完美、蒸汽服务器)

Java Web Start怎么用啊!

托管 Java Web Start 应用程序以包含在 Linux 发行版中