首页 文章

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

提问于
浏览
2

我有开发人员证书(每年从苹果99美元购买),用xcode签署我的申请

code signing parameters

这里也输出spctl

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

我也检查了我的应用程序通过RB应用程序检查灯似乎没问题,应用程序检查器可以看到该应用程序已签名 . 但当我创建包含我的应用程序的dmg,将其上传到我们的服务器时,下载的应用程序无法打开,因为osx抱怨该应用程序来自身份不明的开发人员 . 我想出了原因可能是什么......

1 回答

  • 3

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

    TN2206

    但是,我将在几行中总结一些您需要做的检查,以确保一切正常:

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

    b)确保Xcode设置为 manage automatically your certificate and provisioning profiles - 如果您在代码签名方面遇到问题,这可能是我给您的最佳建议 . 总之,如果你有Xcode 8,你必须:

    • 单击导航区域(左侧)中的 project > Build Settings 选项卡 .

    • 为所有构建配置将 Provisioning Profile 构建设置设置为 Automatic .

    • 设置 Code Signing Identity 构建设置:

    • 对于iOS项目中的所有构建配置,设置为 iOS Developer .

    • 对于macOS项目中的所有构建配置,视情况设置为 Mac DeveloperDeveloper ID .

    • 将目标>常规>团队中的目标设置为 None

    • 对于Mac应用,请在“目标”>“常规”>“签名”中设置目标 None.

    • 对于所有构建配置,将 Provisioning Profile 构建设置更改为 Automatic .

    • 设置 Code Signing Identity 构建设置:

    • 对于iOS目标中的所有构建配置,设置为 iOS Developer .

    • 对于macOS目标中的所有构建配置,视情况设置为 Mac DeveloperDeveloper ID .

    • 返回目标并将General> Team>还原为您的团队

    • 选中 Automatically manage signing 复选框

    • 重启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上运行而不会出现任何问题 .

相关问题