OS X 10.8 Gatekeeper和Java小程序

Ras*_*ber 30 java applet code-signing osx-mountain-lion osx-gatekeeper

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

在此输入图像描述

applet已使用有效的代码签名证书进行签名,并且可以在其他平台以及以前版本的OS X上正常运行.如果我将"允许从以下位置下载的应用程序"更改为"Anywhere",则它可以正常工作.

据我所知,"数字签名无法验证",实际上意味着"没有使用Mac开发者ID进行签名".

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

Zor*_*ski 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小程序无法参与Developer ID程序.

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

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

这与Gatekeeper对原生Mac应用程序的处理方式一致; 默认情况下,不允许来自身份不明的开发人员的应用程序运行.

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

这基本上意味着无法以这样的方式对applet进行签名,以避免显示此消息.我向Apple提交了一个错误报告,说我希望改变消息的措辞,不要包含UNIDENTIFIED,UNVERIFIED,INSECURE等字样......因为这是签署applet的重点,这样用户就可以感受到温暖当他们需要允许小程序运行时,内部就会舒适,并向他们保证他们即将允许的内容是可以验证的并且不会对他们的计算机造成任何伤害,我们需要在它的位置显示它将是可见的,用它捅他们的眼睛.