如何调试 OSX 代码签名拒绝?
How to debug OSX code signing rejection?
我正在为 OSX 签署一个 install4j 安装程序,但是 OSX 拒绝了它。系统日志只报被拒,spctl只报被拒,不解释。我如何确定它被拒绝的原因?
我想您是在谈论 Gatekeeper 不允许您的应用程序在下载后 运行? Gatekeeper 的规则不是基于拒绝应用程序的规则列表,而是基于接受 应用程序的可能规则列表,如果您的应用程序不匹配任何或那些规则。这使得很难记录例如为什么您的应用在 "it didn't match any of the allow rules" 之后被拒绝。现在,如果您知道您希望对其应用哪个 "allow" 规则,您可以尝试基于此对其进行调试,但 Gatekeeper 本身并不知道这一点,因此没有太大帮助。
我假设您希望根据 "identified developer" 规则允许您的应用程序?如果是这样,有几个测试来寻找明显的问题:首先,运行 codesign -vv --deep-verify /path/to/yourapp.app
,并确保它打印 "valid on disk" 和 "satisfies its Designated Requirement"(并且不给出任何错误)-- 如果不是,则应用程序的签名或内容有问题。
其次,运行 codesign -dvv /path/to/yourapp.app
,并确保它列出的数据包括:
Authority=Developer ID Application: [Your name/company here]
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Sealed Resources version=2 rules=[something] files=[something]
如果颁发机构列表与此不同,则表明您使用了错误的证书对其进行签名。如果Sealed Resources版本是1或者没有列出,说明你是用老版本OSX签名的,新版本会拒绝签名格式
我正在为 OSX 签署一个 install4j 安装程序,但是 OSX 拒绝了它。系统日志只报被拒,spctl只报被拒,不解释。我如何确定它被拒绝的原因?
我想您是在谈论 Gatekeeper 不允许您的应用程序在下载后 运行? Gatekeeper 的规则不是基于拒绝应用程序的规则列表,而是基于接受 应用程序的可能规则列表,如果您的应用程序不匹配任何或那些规则。这使得很难记录例如为什么您的应用在 "it didn't match any of the allow rules" 之后被拒绝。现在,如果您知道您希望对其应用哪个 "allow" 规则,您可以尝试基于此对其进行调试,但 Gatekeeper 本身并不知道这一点,因此没有太大帮助。
我假设您希望根据 "identified developer" 规则允许您的应用程序?如果是这样,有几个测试来寻找明显的问题:首先,运行 codesign -vv --deep-verify /path/to/yourapp.app
,并确保它打印 "valid on disk" 和 "satisfies its Designated Requirement"(并且不给出任何错误)-- 如果不是,则应用程序的签名或内容有问题。
其次,运行 codesign -dvv /path/to/yourapp.app
,并确保它列出的数据包括:
Authority=Developer ID Application: [Your name/company here]
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Sealed Resources version=2 rules=[something] files=[something]
如果颁发机构列表与此不同,则表明您使用了错误的证书对其进行签名。如果Sealed Resources版本是1或者没有列出,说明你是用老版本OSX签名的,新版本会拒绝签名格式