首页 文章

为什么OS X 10.10上的守门员不接受在OS X 10.9上使用版本2信封的应用程序?

提问于
浏览
4

我们有一个Mono Mac应用程序,它在AppStore外部分发,由Developer Id证书签名 . Gatekeeper接受OS X 10.9上的应用程序(在10.9.4上测试),但在10.10 DP 7上无法接受 .

The output of some troubleshooting commands on 10.10 DP 7:

mactesters-Mac-mini:myapp 1 mactester$ spctl --assess -v ./myapp.app
./myapp.app: rejected
source=obsolete resource envelope

mactesters-Mac-mini:myapp 1 mactester$ codesign -v myapp.app
myapp.app: resource envelope is obsolete (custom omit rules)

mactesters-Mac-mini:myapp 1 mactester$ codesign -dv myapp.app/
Executable=/Volumes/myapp 1/myapp.app/Contents/MacOS/myapp.sh
Identifier=com.Company.myapp
Format=bundle with generic
CodeDirectory v=20100 size=145 flags=0x0(none) hashes=1+3 location=embedded
Signature size=8531
Timestamp=03 Sep 2014 16:55:21
Info.plist entries=32
TeamIdentifier=not set
Sealed Resources version=2 rules=5 files=813
Internal requirements count=2 size=224
mactesters-Mac-mini:myapp 1 mactester$

The output for the same application on 10.9:

macadmins-iMac:myapp mactester$ spctl --assess -v ./myapp.app
./myapp.app: accepted
source=Developer ID

macadmins-iMac:myapp mactester$ codesign --verify --deep --verbose=4 ./myapp.app
./myapp.app: valid on disk
./myapp.app: satisfies its Designated Requirement

macadmins-iMac:myapp mactester$ codesign -dv myapp.app
Executable=/Volumes/myapp/myapp.app/Contents/MacOS/myapp.sh
Identifier=com.Company.myapp
Format=bundle with generic
CodeDirectory v=20100 size=145 flags=0x0(none) hashes=1+3 location=embedded
Signature size=8531
Timestamp=03 Sep 2014 16:54:50
Info.plist entries=32
TeamIdentifier=not set
Sealed Resources version=2 rules=5 files=813
Internal requirements count=2 size=224

The code signing commands used are not containing the --resource-rules flag:

codesign -v --force --sign 'dev id...' /Volumes/myapp/myapp.app/Contents/MonoBundle/libMonoPosixHelper.dylib
codesign -v --force --sign 'dev id...' /Volumes/myapp/myapp.app

自定义省略规则是什么意思?这个问题怎么解决?

1 回答

  • 1

    “自定义省略规则”错误是由于在签名期间使用--resource-rules标志 . 此标志已被弃用一段时间,自OSX 10.9.5起,Gatekeeper不再接受该标志 . 您可以安全地删除它,但是,版本2签名是向后兼容的,甚至可以与OSX 10.6一起使用(我已经测试过) .

相关问题