我正在尝试使用OSX在我的Java应用程序中签名codesign
.我已经向Apple支付了100美元的赎金,并获得了我的代码签名证书.然后我codesign
像这样使用它来强制它签署以前使用osxappbundle
Maven插件创建的应用程序:
codesign -f -s "Peter Brewer" FHAES.app
当我尝试通过执行以下操作来验证签名时,这似乎完成了这项工作:
codesign --display --verbose=4 FHAES.app
...我收到以下回复:
Executable=/Applications/FHAES.app/Contents/MacOS/JavaApplicationStub
Identifier=FHAES
Format=bundle with Mach-O universal (i386 x86_64)
CodeDirectory v=20100 size=174 flags=0x0(none) hashes=3+3 location=embedded
Hash type=sha1 size=20
CDHash=de2cd9909fcc4bfab1f690c518a6c6c3b3097372
Signature size=4311
Authority=Mac Developer: Peter Brewer (N35745G8TD)
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Signed Time=Jan 10, 2014, 4:46:57 PM
Info.plist entries=10
Sealed Resources version=2 rules=12 files=2
Internal requirements count=1 size=164
除非我误解,否则这似乎表明它已经成功签署了Apple授权的证书.然而,当我尝试启动应用程序时,我得到通常的"无法打开,因为它来自一个身份不明的开发人员"错误.
谁能告诉我我做错了什么?
在如果任何人都可以一个相关的说明,请执行codesign
在Linux中,我会感激不尽.我鄙视Apple破坏我的一键式跨平台构建系统,甚至比勒索我还要支付他们的证书还要多!
几个小时在developer.apple.com上戳了我的眼球,我终于找到了我需要的信息.整个Apple生态系统正在推动开发人员使用Xcode和"他们的做事方式",并需要继续投资Apple硬件和软件.例如,教程视频只能在最近的Mac上查看(比我有权访问的2.5岁系统更新).但无论如何 - 我不会用SO来表达我的挫败感.
我之前尝试失败的原因是因为我使用了错误的Apple证书.上述证书是用于签署应用程序的证书,然后该应用程序被发送给Apple,后者已准备好通过App Store发布该应用程序.由于我不打算通过Apple"出售"我的开源应用程序,我需要另一种称为开发者ID证书的证书,以便我能够在我自己的网站上分发我的应用程序.
要获得开发者ID证书,您需要设置配置文件,注册开发机器并跳过Apple开发人员网站上的各种其他环节.在计算机上安装此证书后,您可以通过执行此操作在命令行上签名codesign -f -s "Developer ID" myapp.app
当我运行codesign --display --verbose=4 myapp.app
它时报告权限值现在以'开发者ID ...'而不是'Mac Developer ...'开头.这是GateKeeper不要为您的用户提供冠状所需的.