为啥我的包裹被归类为危险包裹
Posted
技术标签:
【中文标题】为啥我的包裹被归类为危险包裹【英文标题】:Why is my package categorized as dangerous package为什么我的包裹被归类为危险包裹 【发布时间】:2017-03-20 17:41:56 【问题描述】:OSX 10.12.3,我有一个使用 EV 代码符号进行代码签名的包。
$ codesign --force --sign "3rd Party Mac Developer Application: myname (code...)" mypackage.pkg
但是当有人下载并尝试在 OSX 中安装它时,他们都会得到以下结果:
在英文中同样的对话框:“App can't be opening because it is from an unidentified developer”
当我检查代码符号时,我可以看到它的工作:
$ pkgutil --check-signature mypackage.pkg
Package "mypackage.pkg":
Status: no signature
$ codesign -dv --verbose=4 mypackage.pkg
Executable=/Users/xxx/xxxxxx
Identifier=xxxx
Format=generic
CodeDirectory v=20200 size=177 flags=0x0(none) hashes=1+2 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha1=xx
CandidateCDHash sha256=xx
Hash choices=sha1,sha256
CDHash=xxxxx
Signature size=4715
Authority=3rd Party Mac Developer Application: xxxxx
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Signed Time=1xxx
Info.plist=not bound
TeamIdentifier=xxxxx
Sealed Resources=none
Internal requirements count=1 size=196
如何确保正确完成?这样它就不会吓到 OSX 用户,我在这里缺少什么?
【问题讨论】:
您可能应该说明错误消息,因为我没有看到它(或将其翻译成英文,因为该消息可能在 Google 上有很多点击)。 【参考方案1】:代码签名身份“3rd Party Mac Developer Application:
要签署应用程序包以在应用商店之外分发,请使用“开发者 ID 应用程序:”身份。
然而,您说您正在签署一个“包”并显示了一个带有 .pkg 文件扩展名的文件。要签署安装程序包,请使用“开发人员 ID 安装程序:”身份。此外,您应该使用@ 987654324或适当的选项到pkgbuild
或productbuild
,而不是codesign
,签署安装程序包。
【讨论】:
先生,我的包是 .pkg,其中包含预编译的 .app。那么我应该先签署 .app 再签署 .pkg 吗? (在使用 pkgbuild 或 productbuild 时,我是否使用从 Global sign 购买 3 年的 EV 代码签名?) 在构建安装程序包之前签署您的应用程序包不会有什么坏处,但我认为没有必要。我不确定你的第二个问题是关于什么的。您需要使用来自 Apple 的正确类型的证书进行代码签名。使用来自其他来源的证书进行签名并不能帮助您使用 Gatekeeper(这是在您的问题中显示对话框的内容)。 先生,它起作用了(签署我的包含 .app 的 .pkg)。但我有最后一个问题。我需要签署 .app(第三方开源二进制文件),所以当我访问我的苹果帐户时,我找不到"Developer ID Application: <Team Name>"
参见图片:i.imgur.com/7qim3oh.png 和 i.imgur.com/25Oba2j.png
第一个屏幕截图实际上显示了一个单选按钮,用于创建您的 Developer ID 应用程序证书。您还可以使用 Xcode 自动创建和下载证书。见developer.apple.com/library/content/documentation/IDEs/…。以上是关于为啥我的包裹被归类为危险包裹的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的组件没有包裹在 Swing 的 FlowLayout 中?
为啥在 React 中,当父组件重新渲染时子组件不会重新渲染(子组件没有被 React.memo 包裹)?