使用OS X 10.8的新版本,当您尝试启动已签名的Java小程序时,Gatekeeper将弹出以下警告:
小程序已使用有效的代码签名证书进行签名,并且可以在其他平台以及以前版本的OS X上正常运行。如果我将“允许从以下位置下载的应用程序”更改为“Anywhere”,则它可以正常工作。< / p>
据我所知,“数字签名无法验证”,实际上意味着“未使用Mac开发者ID签名”。
所以:我可以使用Mac开发者ID签署Java小程序吗?我可以使用Mac开发者ID和标准代码签名证书进行签名吗?有更好的方法吗?
答案 0 :(得分:10)
以下是我从Apple Developer Technical Support获得的答案:
感谢您在调查过程中耐心等待。
警报由Java呈现,而不是由Gatekeeper呈现。但是,你是 更正OS X Mountain Lion上的验证逻辑已更改。
现在,用户已经收到此警报 运行已签名的applet,因为签名的applet可以逃脱Java 沙箱并对用户的系统进行意外更改。用户有 如果选中,则选中“允许所有小程序”框 他们信任开发人员,因此他们不会再看到警报 除非他们从Java安全性首选项中删除该项目。
Mountain Lion的变化是现在的验证提醒 基本上意味着applet的签名是有效的,但applet 来自一个身份不明的开发人员,并试图升级特权 当Gatekeeper启用且用户必须决定是否允许时 这一点。
“身份不明的开发者”是指除Mac App Store之外的其他来源 或开发者ID识别的开发人员。请注意,Java小程序不能 参加开发者ID计划。
如果Gatekeeper设置为仅信任Mac App Store应用程序,那么您将 除非您添加,否则无法将小程序添加到受信任列表 使用出现的工作表将applet的证书发送到钥匙串 单击“显示详细信息”后。
根本不允许未签名的小程序逃离Java沙箱。
这与Gatekeeper对原生Mac应用的处理方式一致; 默认情况下,不允许来自身份不明的开发人员的应用程序运行。
如果您希望更改警报的措辞,请提交一份 错误报告https://developer.apple.com/bugreporter。
这基本上意味着无法以这样的方式对applet进行签名,以避免显示此消息。我向Apple提交了一个错误报告,说我希望改变消息的措辞,不要包含UNIDENTIFIED,UNVERIFIED,INSECURE等字样...因为这是签署小程序的全部要点,以便用户能感受到温暖当他们需要允许小程序运行时,内心舒适,向他们保证他们即将允许的内容是可以验证的,并且不会对他们的计算机造成任何伤害,我们需要在它的位置显示它将是可见的,用它捅他们的眼睛。
答案 1 :(得分:3)
你回答了自己的问题。 Gatekeeper认为Apple不签发的证书/签名不受信任。
Apple Documentation会告诉您如何导出证书。然后你可以像往常一样使用它。 codesign命令也可以解决问题。