30

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

在此处输入图像描述

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

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

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

4

2 回答 2

10

这是我从 Apple Developer Technical Support 得到的答案:

感谢您在我们调查此问题时的耐心等待。

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

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

Mountain Lion 的变化在于,验证警报现在基本上意味着小程序的签名是有效的,但小程序来自身份不明的开发人员,并且在启用 Gatekeeper 时尝试提升权限,用户必须决定是否允许这样做。

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

如果 Gatekeeper 设置为仅信任 Mac App Store 应用程序,那么您将无法将小程序添加到受信任列表,除非您使用单击显示详细信息后出现的工作表将小程序的证书添加到钥匙串。

未签名的小程序根本不允许逃离 Java 沙箱。

这与 Gatekeeper 对待原生 Mac 应用的方式是一致的;默认情况下不允许运行来自身份不明的开发者的应用程序。

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

这基本上意味着无法以可以避免显示此消息的方式对小程序进行签名。我向 Apple 提交了一份错误报告,说我希望将消息的措辞更改为不包含诸如 UNIDENTIFIED、UNVERIFIED、INSECURE 之类的词……因为这是签署小程序的全部意义,这样用户就可以感到温暖当他们需要允许小程序运行时,内部舒适,向他们保证他们将允许的内容是好的和经过验证的,并且不会对他们的计算机造成任何伤害,我们需要在它的地方展示它将是可见的,用它来戳他们的眼睛。

于 2012-08-31T07:13:03.823 回答
3

你是在自问自答。Gatekeeper 认为不是由 Apple 颁发的证书/签名是不可信的。

Apple 文档将告诉您如何导出您的证书。然后,您可以照常使用它。codesign命令也可以解决问题

于 2012-07-30T18:24:47.007 回答