问题标签 [codesign]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
675 浏览

iphone - 如果我们想用不同的证书为 iPhone 应用程序签名,我们是否必须更改捆绑 ID?

我们有一个 iPhone 应用程序需要由另一家公司为其企业计划辞职。

使用他们的证书辞职是唯一需要的步骤吗?似乎必须使用唯一的捆绑 ID 创建新的配置文件。

0 投票
2 回答
1264 浏览

ios - 应用程序未通过协同设计验证。签名无效,或未使用 Apple 提交证书签名

所以我对与 Apple 进行代码设计并不陌生。我知道这是应用程序开发的新手部分,但我遇到了这个错误,我无法解决它。我了解我通过钥匙串访问创建了一个私钥,使用该私钥生成证书,使用该证书和 appID 生成配置文件,并使用“App Store”配置文件进行协同设计以进行分发。但我认为由于 xcode 4.2,我遇到了这个错误。但这是我为尝试解决此问题所做的工作:

  1. 使用 uinstall-devtools --mode=all 卸载 xcode,然后重新启动并重新安装 xcode 4.0.2。
  2. 从供应门户中删除并重新下载了证书。(没有无效错误)
  3. 删除了与我正在使用的 appID 关联的所有配置文件,并且只重新下载了 App Store Distribution 配置文件。
  4. 我确保我在项目中明确选择了正确的配置文件和发布的目标设置。
  5. 我确保在方案中为“存档”选择了发布设置。

我能想到的一件事可能是问题是我的目标是 iOS 版本 4.2,而基本 sdk 是 4.3。

但我已经通过苹果的文档:https ://developer.apple.com/legacy/library/technotes/tn2250/_index.html#//apple_ref/doc/uid/DTS40009933

我的问题在我安装 xcode 4.2 后开始出现,然后又回到 4.0.2。

另一件奇怪的事情是,当我为 ad hoc 构建时,我得到了同样的警告,但 ad hoc 构建工作。似乎我无法在忽略警告的情况下提交到应用商店。

0 投票
3 回答
1202 浏览

xcode - Xcode 4:构建时始终未能通过代码验证

我正在使用正确的分发证书构建我的应用程序并构建一个存档,以便我可以提交给 Apple。

验证后,它一直给我这个关于验证失败的错误。

当我查看日志时,错误显示:

应用程序未通过协同设计验证。签名无效,或未使用 iPhone 分发证书签名。(-19011)

知道如何解决这个问题吗?

谢谢,

JH

PS:使用 Xcode 4.2

0 投票
4 回答
4303 浏览

iphone - OTHER_CODE_SIGN_FLAGS 钥匙串标志被忽略了吗?

我刚刚了解了使用 OTHER_CODE_SIGN_FLAGS 指定钥匙串的可能性,其中包括构建和签署应用程序所需的证书。但不幸的是,我无法让它工作。

我的脚本看起来像这样:

但这失败了:

但是,如果我首先切换到钥匙串,它可以工作,但这在可能同时发生多个构建的构建服务器上不可用:

希望你们能帮忙-Morten

0 投票
3 回答
8766 浏览

ios - Codesign 返回 1(对象 ifile 格式无效或不合适)错误

我正在使用 Xcode 4.1 build 4B110f 试图让我的 iOS 应用程序准备好上传。它通过了 Product|Archive 步骤,没有任何错误,两次请求允许签署某些东西。但是当我尝试从组织者验证存档时,它失败了:

我查看了所有类似的问题和解决方案(其中一些毫无意义,或者适用于真正旧版本的工具)。没有人有丝毫不同。

我还检查了 3 次验证是否使用“生产”证书,生成存档的协同设计步骤也是如此。我什至把上面的输出变成了一个 schell 脚本,这样我就可以手动尝试所有的证书:每次都得到相同的结果。

也许正在签名的 .app 文件真的不合适?

顺便说一句,codesign 没有版本标志,但手册页的日期是 2006 年 6 月 1 日。二进制文件的文件日期是 2010 年 11 月 20 日。

更新(第二天):

研究该问题进一步发现了一个晦涩的参考资料,说 codesign 需要以下环境变量集:

使用失败的验证运行的输出,我创建了一个 shell 脚本,它在失败的 codesign --force 步骤和 viola 之前导出了这个 var!代码设计有效。

但这并不能真正帮助我准备上传代码。有没有办法将它包含到由 Organizer Validate 按钮运行的脚本中?

稍后,解决方案!:

根据理论,有一个脚本在某个地方生成了在 Organizer Validate... 运行期间运行的所有命令,我用 grep 和 find 进行了一些挖掘。该脚本确实存在,它的名称是:

这只是 Perl,解决方法是在开始时将所需的环境变量添加到关联数组 %ENV 中,例如在第 72 行:

这完全解决了问题。 我不知道网络上所有其他认为他们通过删除证书、构建清理、关闭和重新启动 Xcode 等组合来修复它的海报来自哪里。我只是悄悄地断言,这个修复有利于科学而不是迷信,并且在 Xcode 4.1 Build 4B110f 及其相关的 PackageApplication 脚本下对我有用,在带有 Perl 5.10.0 的 Snow Leopard 10.6.8 下运行

0 投票
2 回答
35655 浏览

macos - 使用终端从 Mac OS X 钥匙串中删除私钥

我已经使用带有命令的“安全”终端应用程序将 iOS 开发的开发人员身份(证书 + 私钥)导入到钥匙串

这会将 p12 文件中包含的两个项目(证书和私钥)导入给定的钥匙串。但是,我忘了指定-T /usr/bin/codesign,它将协同设计应用程序添加到私钥的访问列表中。我试图将 codesign 应用程序添加到访问列表中无济于事:

  • 我尝试使用添加的参数重新导入身份,但这似乎并没有改变私钥的访问列表。
  • 我还尝试使用security delete-certificate并重新导入从钥匙串中删除证书。这不会更改私钥的访问列表。

由于我只能通过 ssh 访问机器,因此无法使用 Keychain GUI 应用程序。因此,我正在寻找一种从钥匙串中删除私钥的方法(以便之后我可以重新导入身份)。我检查了该security工具的手册页,但没有找到删除私钥的方法。

有什么方法可以仅使用终端命令从钥匙串中删除私钥(因为我只有 ssh 访问有问题的机器)?

0 投票
1 回答
1115 浏览

macos - 使用 Network-HSM 在 OS X 上进行代码签名

我被要求重新设计我们的构建/签名/发布流程。我对 Windows 的东西非常满意,并且我已经确定了几个可以满足我们需要的联网 HSM 产品。它们基本上直接与​​ CryptoAPI 集成,因此进行签名的人可以正常使用 signtool.exe。

我们目前有一个单独的 Mac 团队,他们自己构建/签名/发布。这在我们的一个 DC 中的几台 Mac Mini 上运行良好。我也想保护我们的 Mac 软件密钥,因此我试图找出如何将联网 HSM 集成到我们的 Mac 签名过程中。

我在任何地方都找不到有关此的任何好信息!所以我希望这里有人已经这样做了,可以减轻我的痛苦。

实际问题是;

1) 我可以将 HSM 与标准 Mac 代码签名工具一起使用吗?2)任何人都可以推荐上述供应商/产品吗?3) 谁能指出一些关于 Mac 代码签名和 Mac 加密基础设施内部工作的优秀文档?

干杯

BHB

0 投票
4 回答
38505 浏览

xcode - 您如何为 Mac App Store 设计框架包?

最近提交后,我收到以下错误:

无效签名 - 嵌套应用程序包 (FooBar.app/Contents/Frameworks/GData.framework) 未签名、签名无效或未使用 Apple 提交证书签名。有关详细信息,请参阅代码签名和应用程序沙盒指南。

无效签名 - 嵌套应用程序包 (FooBar.app/Contents/Frameworks/Growl.framework) 未签名、签名无效或未使用 Apple 提交证书签名。有关详细信息,请参阅代码签名和应用程序沙盒指南。

签名无效 - 嵌套的应用程序包 libcurl (FooBar.app/Contents/Frameworks/libcurl.framework) 未签名、签名无效或未使用 Apple 提交证书签名。有关详细信息,请参阅代码签名和应用程序沙盒指南。

所以我根据Technote 2206签署了所有框架包:

技术说明 2206 说:

签名框架

将框架视为捆绑包,因此得出可以直接签署框架的结论似乎是合乎逻辑的。然而,这种情况并非如此。为避免在签署框架时出现问题,请确保签署特定版本而不是整个框架:

# 这是错误的方式:

codesign -s my-signing-identity ../FooBarBaz.framework

# 这是正确的方法:

codesign -s my-signing-identity ../FooBarBaz.framework/Versions/A

当我尝试验证结果时,它对我来说看起来不错:

为了好玩,我确实尝试直接签署框架包,但仍然被拒绝。但这正是文档所说的不应该做的事情。

任何猜测为什么会被认为是无效的?我使用的证书与我用于对我的应用程序进行代码签名的证书相同——过去曾使用过的证书。

我唯一的猜测是与现有的 plists (我需要拥有框架的 Info.plists 中的标识符吗?)或权利 - 有什么建议吗?

0 投票
1 回答
25391 浏览

iphone - 从命令行确定代码签名身份?

我正在尝试设置一种自动方式来签署我的 iOS 应用程序。在使用 codesign 之前,有没有办法从命令行以编程方式确定我的有效签名身份是什么?

例如,对于命令

我怎么知道“iPhone Distribution: Joe Developer”是一个有效的身份?我将如何计算其他有效身份?

我更喜欢在命令行中执行此操作的方法,但在可可中也可以。

0 投票
2 回答
4333 浏览

xcode - 应用程序在 Xcode 4.2 中验证期间未通过协同设计验证

我在使用分发配置文件时遇到问题。

我曾多次尝试使用以下说明创建分发配置文件:http: //developer.apple.com/ios/manage/distribution/index.action

但是当我验证程序时出现错误:

应用程序未通过协同设计验证。签名无效,或未使用 iPhone 分发证书签名。

我已完成以下步骤: 1.我在钥匙串访问中创建了证书。2.我已经在 iOS Provisioning Portal 中创建了配置文件 3.我已经创建了一个应用程序 ID 4.我已经在 Xcode 的代码签名部分设置了配置文件

此外,我已经检查过钥匙链访问中没有重复或过时的证书。

我查看了stackoverflow并没有找到解决方案。

可能是什么问题?