在 Mac OS X 10.9 上,签名的 Java Web Start 应用程序默认被阻止并显示以下消息:
"application.jnlp" can't be opened because it is from an unidentified developer.
我知道可以削弱安全检查以允许任何应用程序运行,但这需要最终用户的手动干预。
是否可以对 Java Web Start 应用程序进行“签名”,使其被识别为来自已识别的开发人员?
谢谢
在 Mac OS X 10.9 上,签名的 Java Web Start 应用程序默认被阻止并显示以下消息:
"application.jnlp" can't be opened because it is from an unidentified developer.
我知道可以削弱安全检查以允许任何应用程序运行,但这需要最终用户的手动干预。
是否可以对 Java Web Start 应用程序进行“签名”,使其被识别为来自已识别的开发人员?
谢谢
在最新的 OSX 版本中,Apple 已将其安全模型更改为仅支持来自 Mac App Store 和特定开发人员的应用程序。在大多数情况下,这会禁止 jnlp/java-web-start 应用程序启动。
如果这是受信任的应用程序,您可以通过如下更新系统设置来覆盖这些设置:
系统偏好设置 -> 安全和隐私 -> (解锁窗口) -> 允许从以下位置下载应用程序:(选择任意位置)
在某些情况下,您可能还需要更新 Java 安全首选项
系统偏好设置 -> Java -> 安全 -> (选择中)
调整这些时要小心。这些设置将为您打开流行的攻击向量,攻击者可以在其中利用 Java 运行时(Java 0 天)中的漏洞。
这是一个相关的帖子。似乎无法绕过安全性“全部允许”解决方法。
OS X 10.8 Gatekeeper 和 Java 小程序
来自上述帖子中的 Apple 技术支持。
未识别的开发者”是指 Mac App Store 或开发者 ID 识别的开发者以外的来源。请注意,Java 小程序不能参与开发者 ID 计划。
我正在考虑构建一个本机应用程序并使用自定义 Web 协议,而不是类似于在 URI 中看到 skype:// 的 skype。在不久的将来,Apple 似乎不会改变他们对 java applet 的立场。它很可能会变得更加受限,最终就像 iOS 上的 flash 一样被禁用。
Apple 似乎确实支持签署 webstart ——但不是直接支持。您必须将其捆绑在档案中。请参阅本页底部的注释:
您可以使用 codesign 实用程序对 JNLP 文件进行签名,这会将代码签名作为扩展属性附加到 JNLP 文件。要保留这些属性,请将 JNLP 文件打包为 ZIP、XIP 或 DMG 文件。请小心使用 ZIP 格式,因为某些第三方工具可能无法正确捕获所需的扩展属性。
另请注意,非 Apple 开发人员不再支持 XIP :
重要提示:从 macOS Sierra 开始,只会扩展由 Apple 签名的 XIP 档案。一直在使用 XIP 存档的开发人员将需要转而使用签名的安装程序包或磁盘映像。
How to sign (dynamic) JNLP files for OSX and Gatekeeper的答案解决了这个问题,只是忽略了“动态”方面。
您可以codesign -f -s "Developer ID Application: " application.jnlp
,但 HFS 资源不会通过网络与文件一起传输。
在 Oracle 找到解决方案之前,如果他们真的解决了 JNLP/Web Start 问题,看起来我们必须找到一种解决方法,让我们开始创建 Mac 应用程序包。
这似乎在 OS X 10.10 中发生了变化。现在转到系统偏好设置->安全和隐私->(解锁窗口)->允许从以下位置下载的应用程序:(选择任意位置)(在尝试运行 .jnlp 文件后),您将看到“仍然运行”的选项。
遗憾的是,Apple 已在 macOS Big Sur 版本中删除了该Anywhere
选项。System Preferences -> Security & Privacy
以下是关于如何在收到以下消息时覆盖未签名jnlp文件的 MacOS 安全设置的非常简单的方法:
“file-name.jnlp”无法打开,因为它来自身份不明的开发人员。macOS 无法验证此应用程序是否没有恶意软件。
请按照以下步骤覆盖系统安全设置:
Control
+ 单击然后打开此外,您可能需要下载适用于 macOS 的 OpenWebStart