【问题标题】:OS X productsign error: Could not find appropriate signing identityOS X productsign 错误:找不到合适的签名身份
【发布时间】:2019-07-24 05:27:07
【问题描述】:

我正在尝试使用命令行实用程序productsign 对 OS X 安装程序包进行签名,但出现错误。

productsign --sign "Developer ID Installer: XYZ" input.pkg output.pkg
productsign: error: Could not find appropriate signing identity for “Developer ID Installer: XYZ”.

当我打开 Keychain Access 时,我可以看到我在 developer.apple.com 创建并导入到我的登录 Keychain 中的证书。它的通用名称与我的命令行参数匹配:“开发人员 ID 安装程序:XYZ”。有没有办法调试这个特定的错误?

【问题讨论】:

  • 你能看到你的私钥吗?您需要证书和私钥来进行签名(Apple 将其称为“身份”)。
  • 谢谢,这就是问题所在!我在一台机器(有私钥)上生成证书,然后在另一台机器(没有私钥)上运行 productsign。请输入您的答案,我会将其标记为已接受。

标签: macos pkg-file


【解决方案1】:

我有同样的问题。我的安装程序证书没有私钥。 您可以通过打开钥匙串来检查这一点并查找您的证书,名称如下:

开发者 ID 安装程序:我的公司 (1258345791ZL)

如果你有一个私钥,你应该看到

开发者 ID 安装程序:我的公司 (1258345791ZL) (!) 私钥

如果你的证书下的私钥不能展开,说明它丢失了。

然后要解决此问题,您必须使用您的 Apple ID 登录 developer.apple.com 和

1- 尝试删除并再次下载您的证书

2- 如果这还不够,请按照以下步骤创建一个新的

2a - 点击 (+) 或转到此处:

https://developer.apple.com/account/mac/certificate/distribution/create

2b - 指定生产/开发人员 ID,然后按继续

2c - 指定“开发者 ID 安装程序”

2d - 按照说明使用钥匙串创建证书请求

2e - 在苹果开发者中上传您的证书申请文件

2f - 在您的钥匙串中下载新创建的证书。

2g - 确保清除所有其他安装程序证书。

瞧,你可以签名了。

【讨论】:

  • 为什么苹果需要如此拼命地把事情复杂化?!?难以置信!
【解决方案2】:

检查您的钥匙串中的私钥。您需要密钥和证书来进行签名(Apple 将其称为“身份”)。

【讨论】:

  • 你能说得更详细些吗?我的私钥与我的公钥存储在哪里?例如,我备份了 .cer 文件。我有一个新的mac。我双击.cer 文件。它安装在我的钥匙串中。我错过了什么?
  • @gman 您的.cer 文件只是证书。希望您保留旧的钥匙串,如果是,请打开它并单击 Keys 类别。您应该看到 1+ 个私钥。如果他们有披露三角形,请打开它们以找到您要签名的证书。那将是私钥,您应该将其导入新 Mac 上的钥匙串中。如果您没有钥匙串并且无法从备份中检索它,那么您需要上传新密钥并创建新证书。
【解决方案3】:

我遇到了这个问题,这是因为我没有私钥。您需要CertificateSigningRequest.certSigningRequest 的最佳实践与私钥一样好。

  • 使用作为开发者帐户的 Apple ID 登录 developer.apple.com
  • (您可以使用 Xcode,但太难了,您可以在浏览器中登录您的 Apple Developer 帐户)
  • 您可以查看现有证书并下载它们,但如果您没有它们的密钥,这对您没有什么好处
  • 告诉 developer.apple.com 您要创建一个新的 Developer ID 安装程序,您必须为其提供一个文件,说明如何在以下步骤中制作
  • 启动钥匙串访问(这些指令大多是从苹果窃取的)

选择钥匙串访问 > 证书助手 > 向证书颁发机构请求证书。

在“证书助手”对话框中,在“用户电子邮件地址”字段中输入电子邮件地址。

在 Common Name 字段中,输入密钥的名称(例如,Gita Kumar Dev Key)。

将 CA 电子邮件地址字段留空。

选择“保存到磁盘”,然后点击继续。

  • 将此新创建的 CertificateSigningRequest.certSigningRequest 文件反馈给 Safari
  • 下载生成的 developerID_installer.cer(您现在有一个签名的 Developer ID)
  • 双击将其添加到登录钥匙串中

  • finally productsign --sign “开发者 ID 安装程序:您的开发者名称 (1A2B3C4D5E)”~/Desktop/example.pkg ~/Desktop/signed-example.pkg

【讨论】:

  • 1A2B3C4D5E 是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 2012-10-31
  • 2016-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多