我刚刚开始对我的OSX桌面应用程序进行签名,这样它就可以很容易地安装在OSX 10.8上。我遇到了一个非常奇怪的问题,签名工作正常,如果dmg通过DropBox或FTP传输到Mac,我可以安装,但如果dmg上传到服务器,然后使用浏览器下载到Mac,签名就会失败(用户会看到与文件未签名相同的错误)。
背景:该应用程序是Java,在Install4J中使用来自Apple的.p12进行签名。有趣的是,对于一个未签名或下载的DMG,OSX 10.8显示的错误真的很奇怪,它说安装程序"损坏"了,应该卸载。
有人知道为什么当使用浏览器下载DMG时签名会失败吗?
Ingo有正确的答案,但我想指出是什么导致了问题的混淆。当使用dropbox/ftp移动安装程序时,GateKeeper似乎不会检查签名——只有当使用浏览器(或者其他选择方法)下载时才会检查签名。
因此,传输方法似乎起了作用,而事实上签名根本不起作用。
您使用了错误的证书进行签名。要对install4j安装程序进行签名,您需要应用程序ID证书,而不是安装程序ID证书。
不幸的是,如果证书链不完整,install4j 5.1.1在编译过程中不会抱怨。install4j 5.1.2将修复此问题。
为了澄清,我想添加一个要使用的苹果证书是"开发者ID应用程序"证书。它可以在Mac上从应用程序->实用程序->钥匙链访问导出。