我的代码签名 DMG 被 GateKeeper 拒绝
My code-signed DMG is rejected by GateKeeper
我正在尝试在代码签名的 DMG 卷中分发应用程序(本身代码签名),由自签名代码证书(使用钥匙串证书助手生成)签名。
我在 macOS Mojave 上,我正在使用以下过程创建 DMG:
- 创建一个新的空文件夹
testsrc
- 将代码签名的应用程序包复制到新文件夹中
运行
hdiutil create -volname test -srcfolder testsrc -ov -format UDBZ test.dmg
对 DMG 进行代码签名:
codesign -s keyid test.dmg
成功(无错误消息,return 代码 0)。此外,尝试再次执行 codesign
会导致消息“test.dmg: is already signed”。我可以验证签名:
codesign -vvvv -d test.dmg
Executable=/path/to/test.dmg
Identifier=test
Format=disk image
CodeDirectory v=20100 size=291 flags=0x0(none) hashes=1+6 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha256=73…
Hash choices=sha256
Page size=none
CDHash=73… (same as above)
Signature size=1760
Authority=keyid
Signed Time=12 Dec 2018 at 18:26:31
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=96
但是,当我尝试打开隔离的(从本地主机下载的)DMG 时,我收到了通常的 Gatekeeper 错误消息:
此外,spctl -v -a -t open --context context:primary-signature test.dmg
告诉我:“test.dmg:被拒绝了”。
这是否纯粹是因为我的证书是自签名的,而不是 Apple Developer ID Application 证书?有解决办法吗?
我在 How to add codesigning to dmg file in mac 中看到了答案,但他们假设上述过程应该有效。
Is this purely because my certificate is self-signed rather than being an Apple Developer ID Application certificate?
简而言之:是的。
使用 Apple 签名的开发人员证书中的密钥后,错误消失了,应用程序现在通过了 Gatekeeper 的验证。
我正在尝试在代码签名的 DMG 卷中分发应用程序(本身代码签名),由自签名代码证书(使用钥匙串证书助手生成)签名。
我在 macOS Mojave 上,我正在使用以下过程创建 DMG:
- 创建一个新的空文件夹
testsrc
- 将代码签名的应用程序包复制到新文件夹中
运行
hdiutil create -volname test -srcfolder testsrc -ov -format UDBZ test.dmg
对 DMG 进行代码签名:
codesign -s keyid test.dmg
成功(无错误消息,return 代码 0)。此外,尝试再次执行 codesign
会导致消息“test.dmg: is already signed”。我可以验证签名:
codesign -vvvv -d test.dmg
Executable=/path/to/test.dmg
Identifier=test
Format=disk image
CodeDirectory v=20100 size=291 flags=0x0(none) hashes=1+6 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha256=73…
Hash choices=sha256
Page size=none
CDHash=73… (same as above)
Signature size=1760
Authority=keyid
Signed Time=12 Dec 2018 at 18:26:31
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=96
但是,当我尝试打开隔离的(从本地主机下载的)DMG 时,我收到了通常的 Gatekeeper 错误消息:
此外,spctl -v -a -t open --context context:primary-signature test.dmg
告诉我:“test.dmg:被拒绝了”。
这是否纯粹是因为我的证书是自签名的,而不是 Apple Developer ID Application 证书?有解决办法吗?
我在 How to add codesigning to dmg file in mac 中看到了答案,但他们假设上述过程应该有效。
Is this purely because my certificate is self-signed rather than being an Apple Developer ID Application certificate?
简而言之:是的。
使用 Apple 签名的开发人员证书中的密钥后,错误消失了,应用程序现在通过了 Gatekeeper 的验证。