使用 productsign 签署 pkg 后无法使用 codesign 检索证书

分享于2023年03月15日 codesign electron electron-builder macos productsign 问答
【问题标题】:Unable to retrieve the certificate with codesign after signing the pkg with productsign使用 productsign 签署 pkg 后无法使用 codesign 检索证书
【发布时间】:2022-01-26 23:19:54
【问题描述】:

在过去的 2 周里,我一直在努力发布 .pkg。

如果我执行 codesign -dvv app-version.pkg

我收到 app-version.pkg: code object is not signed at all

那我想用 productsign --sign "3rd Party Mac Developer Installer: xxx (yyy)" ./app-version.pkg ./app-version-signed.pkg 签名

输出是:

productsign: signing product with identity "3rd Party Mac Developer Installer: xxx (yyy)" from keychain /Users//Library/Keychains/login.keychain-db
productsign: adding certificate "Apple Worldwide Developer Relations Certification Authority"
productsign: adding certificate "Apple Root CA"
productsign: Wrote signed product archive to ./app-version-signed.pkg

当我使用 codesign -dvv app-version-signed.pkg 检查我的代码设计时,我得到了相同的结果。 app-version-signed.pkg: code object is not signed at all


我们正在使用 electron-builder 构建 pkg,但 pkg 尚未签名。该应用使用 Developer ID application 3rd Party Mac Developer Application 签名。


【解决方案1】:

简答:使用 pkgutil --check-signature 而不是 codesign -dvv

长答案:扁平包使用与其他东西有些不同的签名格式,您需要使用不同的工具对其进行签名并检查签名。具体来说,使用 productsign 而不是 codesign 来签名, pkgutil 而不是 codesign 来检查签名。

当您在一个包上使用 codesign -dvv 时,它会寻找它的签名格式,而实际上那里没有。

【讨论】:

  • 哦,我明白了。感谢您的解释。我对其他论坛帖子感到困惑。它确实说它是用 3rd Party Mac Developer: xxx (yyy) 签名的。但它也说明了以下内容: Status: signed by a developer certificate issued by Apple (Development) 。当我搜索它时,我发现了一个未解决的 SO 帖子。它不应该说一些关于分发的事情吗?