macos - osx 提示应用程序来自身份不明的开发人员,尽管它通过了所有验证

标签 macos code-signing macos-sierra

我有开发者证书(从苹果购买,每年 99 美元),用 xcode 签署了我的应用程序

code signing parameters

这里也是 spctl 的输出

spctl  --assess -v /Volumes/<valume>/myapp.app
/Volumes/<valume>/myapp.app: accepted
source=Developer ID

我还通过 RB 应用检查灯检查了我的申请 一切似乎都正常,应用程序检查器可以看到该应用程序已签名。 但是当我创建包含我的应用程序的 dmg 并将其上传到我们的服务器时, 下载的应用程序无法打开,因为 osx 提示该应用程序来自身份不明的开发人员。我不知道原因是什么......

最佳答案

首先,您应该查看此技术说明:

TN2206

但是,我将用几行总结您需要进行的一些检查,以确保一切顺利:

a) 确保您使用的是最新的 Xcode 版本 - 有时只需升级即可解决您的所有问题

b) 确保 Xcode 设置为自动管理您的证书和配置文件 - 如果您在代码签名方面遇到问题,这可能是我能给您的最佳建议。总之,如果您有 Xcode 8,您必须:

  1. 点击导航区域(左侧)中的项目> build设置选项卡。
  2. 将所有构建的配置文件build设置设置为自动 配置。
  3. 设置代码签名身份build设置:
    • 将 iOS 项目中的所有构建配置设置为 iOS Developer
    • 根据需要,为 macOS 项目中的所有构建配置设置为 Mac Developer开发人员 ID
  4. 在“目标”>“常规”>“团队”中将目标设置为
  5. 对于 Mac 应用,请在“目标”>“常规”>“签名”中将目标设置为
  6. 将所有构建配置的配置文件build设置更改为自动
  7. 设置代码签名身份build设置:
    • 将 iOS 目标中的所有构建配置设置为 iOS Developer
    • 根据需要,为 macOS 目标中的所有构建配置设置为 Mac DeveloperDeveloper ID
  8. 返回“目标”并将“常规”>“团队”> 恢复为您的团队,并且
  9. 选中自动管理签名复选框
  10. 重新启动 Xcode。

这在QA1814中有部分解释。 ,但其中缺少一些重要步骤,并且其中的一些信息已过时。所以我建议你按照我上面说的去做。

c) 如果您在 El Capitan (10.11) 或更高版本上运行,请通过在终端中运行以下命令来检查您的代码:

$ spctl -a -v path/to/your.app

它应该产生类似的结果:

path/to/your.app: accepted
source=Developer ID

您应该检查的另一个命令是:

$ spctl -a -v --raw path/to/your.app

或者这个:

$ codesign --verbose=4 --deep --strict path/to/your.app

这些将检查是否有任何框架或任何嵌入式代码正在执行不应该执行的操作,例如指向允许目录之外的代码,例如:

/System
/Library
/usr

因为这会带来安全风险。

但是,不要使用后一个命令来真正对您的应用程序进行代码签名。这只是为了模仿 Gatekeeper 检查您的应用程序的操作。

要了解更多应该使用什么命令,请阅读 Code Signing Guide .

d) 使用以下命令对您的 dmg 磁盘镜像进行代码签名:

codesign -s <identity> <disk-image>

现在强烈建议您的软件在 macOS Sierra 上运行而不会出现任何问题。

关于macos - osx 提示应用程序来自身份不明的开发人员,尽管它通过了所有验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41062607/

相关文章:

c++ - 如何安装此驱动程序?

c++ - boost + 自制软件 + macOS Sierra

swift:等到电源改变(mac)

swift - NSCollectionView 具有充满活力的背景

macos - 将 Cocoa 与 AppleScript 结合使用

android - 签署 APK 而不将 keystore 信息放入 build.gradle

java - 在 Swing 中打印度数符号 (°) 时出现问题

iCloud 和 Xcode 6 - 无处不在的容器

sockets - OS X 上的 UDP 客户端

macos - NSSearchField 带有左对齐占位符