OS X 10.8门卫和Java小程序

30

随着OS X 10.8的新版本发布,当您尝试启动已签名的Java小程序时,Gatekeeper将弹出以下警告:

enter image description here

该小程序已使用有效的代码签名证书进行了签名,并且在其他平台以及早期版本的OS X上可以正常工作。如果我将“允许下载软件的应用程序”更改为“任何来源”,它就可以正常工作。

据我所知,“数字签名无法验证”实际上意味着“该签名未使用Mac开发者ID进行制作”。

那么:我可以使用Mac开发者ID签署Java小程序吗? 我可以同时使用Mac开发者ID和标准代码签名证书对其进行签名吗?是否存在更好的方法?


2
顺便说一句,我认为这很愚蠢,因为Applets用于Web浏览器,它们是跨平台的。可惜苹果公司的工作方式与其他(操作系统)世界不同... - tiktak
1
@tiktak 同时,Java已经被证明是苹果的一个大麻烦。别担心,Flash也是如此。因此,他们的恐惧有一定的现实基础。 - Constantino Tsarouhas
2个回答

10

以下是我从苹果开发技术支持得到的答复:

感谢您耐心等待我们的调查。

警报是由 Java 而不是 Gatekeeper 弹出的。但是,您是正确的,验证逻辑已在 OS X Mountain Lion 上更改。

一段时间以来,用户在运行签名的 applet 时就会看到此警报,因为签名的 applet 可以逃离 Java 沙箱并对用户系统进行意外更改。如果用户信任开发者,则可以选择选中“允许来自【开发者】的所有 applet”框,这样除非将该项从 Java 安全首选项中移除,否则他们不会再次看到这个警报。

在 Mountain Lion 中更改的是验证警报现在基本上意味着 applet 的签名有效,但是该 applet 来自未知的开发者,并且在启用 Gatekeeper 并且用户必须决定是否允许升级权限时尝试升级权限。

“未知开发者”表示来源不是 Mac App Store 或经过 Developer ID 鉴定的开发者。请注意,Java applet 无法参与 Developer ID 程序。

如果 Gatekeeper 设置仅信任 Mac App Store 应用程序,则除非使用单击“显示详细信息”后出现的表格将 applet 的证书添加到钥匙串,否则您将无法将该 applet 添加到可信列表中。

未签名的 applet 根本不允许逃离 Java 沙箱。

这与 Gatekeeper 对本机 Mac 应用程序的处理一致;来自未知开发者的应用程序默认情况下不允许运行。

如果您希望看到警报的措辞更改,请在https://developer.apple.com/bugreporter上提交错误报告。

这基本上意味着没有办法以这种方式签署小程序,以避免显示此消息。我向苹果提交了一个错误报告,说明我希望更改消息的措辞,不要包含未识别、未验证、不安全等词语......因为这就是签署小程序的全部意义,用户需要在需要允许小程序运行时感到温馨舒适,以确保他们即将允许的内容是可以接受的、已经过验证的并且不会对他们的计算机造成任何伤害,我们需要将其显示在可见的位置,以吸引他们的注意。


3
你自己回答了你的问题。 Gatekeeper认为由Apple未颁发的证书/签名是不可信的。 Apple文档会告诉你如何导出你的证书。然后你可以像往常一样使用它。 codesign命令也可能适用。

似乎 Gatekeeper 没有尝试验证 jar 签名,而是查看 HFS 扩展属性以验证由 Apple 发布的开发者 ID。https://dev59.com/v2Qn5IYBdhLWcg3wRlYM#17222479 你测试过你的解决方案了吗?还是这只是猜测? - jla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接