代码设计返回未知错误 -1=ffffffffffffffff

Posted

技术标签:

【中文标题】代码设计返回未知错误 -1=ffffffffffffffff【英文标题】:Codesign returned unknown error -1=ffffffffffffffff 【发布时间】:2017-05-25 06:34:38 【问题描述】:

我尝试对 ios 应用程序进行代码签名, 这些是我遵循的步骤

    security create-keychain -p password $KEYCHAIN
    security set-keychain-settings -u -t 300 $KEYCHAIN
    security list-keychains -d user -s login.keychain $KEYCHAIN
    security import "$1" -k $KEYCHAIN -A -P "$PASSPHRASE" -A >/dev/null
    security unlock-keychain -p password $KEYCHAIN

    /usr/bin/codesign -f -s $IDENTITY --keychain $KEYCHAIN --entitlements $ENTITLEMENTS Payload/Test.app

这返回了我 Codesign 通过 ssh 返回了未知错误 -1=ffffffffffffffff。

如果我直接在机器上执行代码签名命令,则签名成功。

该问题仅存在于 Mac OS Sierra 中。

【问题讨论】:

我遇到了这个问题,因为当 Xcode 要求我允许访问钥匙串时,我不小心按了“拒绝”。这对我有帮助:Can't run Xcode project on device due to certificate issues(重启机器!)。 【参考方案1】:

前段时间遇到同样的问题,补充

security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k password $KEYCHAIN

帮我解决了。

【讨论】:

您能否详细说明问题所在?这段代码是如何解决的? 根据我当时的研究,我认为问题与钥匙串权限有关,这就是该命令修复的问题:它告诉系统相关钥匙串适合代码签名。 当时我打开了一个关于 fastlane 的 github 问题,github.com/fastlane/fastlane/issues/8797 - 即使你没有运行 fastlane,那里的一些信息可能会有所帮助。 感谢您的信息,但他们都没有帮助,从本地机器上它能够正确签名,但通过 ssh 它向我抛出了这个错误 如果您不知道 $KEYCHAIN 是什么,请输入 security list-keychains 并选择一个(应该是登录和系统钥匙串文件的路径)。【参考方案2】:

在直接从 Xcode 归档时遇到了同样的问题。 分享解决方案以防万一。

有时,钥匙串似乎最终处于损坏状态。也使用 MacOS Sierra。

症状:

重启 Xcode 后需要重新登录才能访问帐户

在使用钥匙串访问进行某些操作时提示输入密码

钥匙串访问 - 通过更改钥匙串设置访问登录钥匙串时出错...

对我来说解决方法是锁定和解锁(需要密码)涉及的钥匙串,在我的情况下是登录

【讨论】:

锁定和解锁钥匙串访问对我有用.. 我使用的是 macOS High Sierra 10.13.1.. 未知错误 -1=fffffff 对 Apple 没有意义:| 奇怪的错误。我不记得解锁我的钥匙链,但它已解锁。锁定它,它又好了。 这是帮助我解决问题并为我节省大量时间的最佳答案。谢谢你,罗马诺。 一张图片胜过千言万语。工作。 非常感谢。我被这个问题困扰了一段时间。 KeyChain 中的锁定/解锁工作。我正在使用 Xcode 9.2、MacOS Sierra 10.12.6【参考方案3】:

除了这里提到的之外,我还要尝试更多的东西:问题是钥匙串不喜欢 SSH 会话。我必须在我的会话中执行这些来修复它:

security unlock-keychain -p MY_PASS ~/Library/Keychains/login.keychain
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k MY_PASS ~/Library/Keychains/login.keychain
security set-keychain-settings ~/Library/Keychains/login.keychain

我还通过从 XCode 中删除我的帐户来删除我当前的证书系统/帐户证书(我使用 fastlane 进行构建),但我怀疑这不应该影响它。

【讨论】:

有趣。这解决了我的代码签名问题,但它破坏了我的 Git 客户端。我的 Mac 是 Jenkins 奴隶,现在它无法从 Git 中签出源代码。关于为什么会发生这种情况的任何线索? 如果可以的话,请解释一下如何反转这个命令。 好吧,我猜您更改了您的密钥库凭据 (MY_PASS) 并且 git 客户端不能再使用密钥库/钥匙串了。但是,我无法解释如何解决这个问题,因为我使用 MacOS 只是为了设置该代理,所以我在这里的经验相当......有限。 感谢@TadasŠubonis。注意:如果提示用户名或密码不正确,请尝试运行不带 -p 参数的命令,然后在提示时输入密码。【参考方案4】:

@madhu 我一直在尝试解决相同的问题,发现与相关证书关联的密钥的访问控制设置为“在允许访问之前确认”,这在 Jenkins 中不起作用。我将它(通过 Keychain Access gui - Get Info, Access Control)修改为“允许所有应用程序访问此项目”,我的构建成功了。

【讨论】:

谢谢,这对我有用。请注意,仍然会出现一个要求输入密码的对话框,但您可以说“总是”。【参考方案5】:

您可能已经从 KeyChain 导出了一些文件,例如 p12,当操作系统询问您的 root 密码时,您拒绝了它,那么 Xcode 将使用此信息编码签名错误。

如果是这样的话,你应该重复上面的操作,输入你的密码并点击允许,然后代码签名就可以了。

【讨论】:

【参考方案6】:

这发生在无头构建中,因为无法显示或响应密钥访问提示。解决方案是通过提前授予对密钥的访问权限来防止显示该提示。

打开 Keychain Access,找到您的签名证书的密钥(登录-> 证书,然后展开证书以显示其密钥)。右键单击该键并选择:获取信息 -> 访问控制,然后选择“允许所有应用程序访问此项目”。

【讨论】:

【参考方案7】:

我已经尝试了网络上几乎所有现有的建议,但都没有帮助...

最后只重新生成配置文件(用于 AdHoc),重新下载并将其放置到 ~/Library/MobileDevice/Provisioning Profiles/ 覆盖现有的文件救了我的命。

顺便说一句,AppStore 构建一直都是成功的,所以问题肯定出在 AdHoc 配置文件本身(很奇怪,因为它看起来很不错)。

【讨论】:

您是否遇到了与我发布的相同的问题?? 是的,通过 ssh 与 error -1=ffffffffffffffff 完全相同,没有明显原因(我有 macOS Sierra 10.12.6)。 嘿,我今天再次浏览了所有这些东西,发现了以下内容:1)~/Library/MobileDevice/Provisioning\ Profiles/ 目录中的 *.mobileprovision 文件不能具有com.apple.quarantine 扩展属性。通过 Safari 从 Mac 下载时默认添加。这就是为什么上次重新下载对我有帮助的原因,因为我尝试从 Windows 下载并通过 WinSCP 放在 Mac 上。 2)答案中的security 命令也必须运行。上次我在第 1 步之前执行此操作但没有帮助,这次运行它对我有帮助(因为我已经正确执行了第 1 步)。 顺便说一句,这个属性的存在可以通过ls -l@检查并且可以通过xattr -d com.apple.quarantine /path/to/file.mobileprovision删除 我对您的情况一无所知,但是对于我发布的问题对您的解决方案没有任何影响,这可能是其他解决方案【参考方案8】:

即使我们在钥匙串中安装了正确的证书,并在 ~/Library/MobileDevices/Provisioning Profiles 下安装了正确的 Provisioning Profile。

我们也可以看到

unknown error -1=ffffffffffffffff

对于这个错误,我尝试了以下步骤来解决这个问题:

    重启机器,使用“安全解锁钥匙串”解锁钥匙串,再次锁定钥匙串 删除 ~/Library/Developer/Xcode/DerivedData 文件夹。 运行 carthage bootstrap --platform iOS 打开源代码同步下工作区,运行“xattr -rc”。然后在 xcode 中打开 .xcodeproject 文件。 为每个目标启用自动签名。需要使用有效凭据登录。 单击签名下的配置文件。 再次解锁钥匙串 将构建设备更改为通用设备,在 Product --> Clean 下,然后 Product --> Archive 将显示钥匙串访问允许,单击“始终允许”。 您应该确保存档成功,然后再次触发 Jenkins 作业。

【讨论】:

以上是关于代码设计返回未知错误 -1=ffffffffffffffff的主要内容,如果未能解决你的问题,请参考以下文章

mysql 在 xampp 中停止工作并出现错误 InnoDB:文件(未知):“读取”返回操作系统错误 223

IOS 蓝牙 BLE 写入值返回“未知错误”

Word insertOoxml 方法返回错误:所有输入都未知

为啥graphQl在尝试对查询进行切片时返回“字段上的未知参数'first'......”错误?

AWS Amplify 突变调用返回“UnknownArgument 类型的验证错误:未知字段参数”

Qtcpserver仅在调试器下返回listen函数的未知错误