我如何摆脱 Apple Developer Id Certificate 的混乱局面

How do I get myself out of Apple Developer Id Certificate mess

免责声明,我是 Java 开发人员,而不是 Apple 开发人员,因此很少使用 Apple 专用工具。

我开发了一个 Java 应用程序,作为我从命令行构建的一部分,我使用 Apple Developer Id 证书对其进行签名,如下所示

export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate"

/usr/bin/codesign --sign "Developer ID Application: P Taylor" --force --deep --verbose /Applications/SongKong.app
/usr/bin/codesign --verify --deep  --verbose /Applications/SongKong.app

不幸的是,当我今天尝试构建时出现错误,因为证书已在几天前过期,它最初是在 5 年前创建的。

所以我更新了 Apple Developer 会员资格(也已过期)并最终找到了使用 KeyChain 创建 CertificateSigningRequest.certSigningRequest 文件的方法,然后我将其上传到 Apple它生成了一个 developerID_application.cer 文件。我打开它,它被添加到 KeyChain

然后我重新运行我的构建,但它失败了,因为它现在找到了两个证书

然后我删除了旧的过期的并重新运行,这次我似乎必须通过输入我的 KeyChain 密码来授予使用证书的权限。不幸的是,这似乎与我的 Mac 主密码不同,因此我最终不得不强制退出并重新启动。

为了重置 KeyChain 密码,我按照网上的步骤

Open KeyChain Access
From the KeyChain Access menu, choose Preferences.
Click General, then click Reset My Default KeyChain.

然后我重新运行我的构建,但尽管证书似乎在那里,但它报告 'no identity found'。我想因为创建了一个新的 KeyChain 我已经删除了我的个人身份(这是证书颁发机构吗?)。

所以现在我只有一个 Developer Id 证书,但没有其他部分,不知道该怎么办。

问题1:当我选择重置我的默认钥匙串时它说旧的钥匙串被保存在某个地方,所以我的第一个问题是可以我再次将其设置为默认值,然后可能有一种方法可以实际重置密码,或者我可以猜到它。

问题 2:如果我不能完成问题 1,我需要做什么来重新创建我现在丢失的个人证书部分。请记住,这只是用户可以在他们的 Mac 上安装我的软件而不会收到有关不受信任的开发人员的警告。

好吧,我解决了,我按照 these 的说明来恢复我以前的钥匙串,基本上

  • KeyChain Access select Delete Keychain "login",确保选择 Delete出现提示时引用,而不是删除引用和文件
  • 打开 Finder,然后转到文件夹 ~/Library/Keychains
  • login.keychain 重命名为 login.keychain.old
  • 重命名 login-renamed-1.keychainlogin.keychain
  • KeyChain Access select 添加钥匙串和 select login.keychain 文件
  • 重新启动 KeyChain Access 以查看正确的结果

但后来我仍然遇到问题,当我尝试签名时,系统提示我输入 KeyChain 密码,但我不知道......

但是在 KeyChain Access 中我去了 Edit:Change settings for keychain "login" 并输入我认为是旧密码和新密码的内容,它接受了更改,即使我使用密码签名失败

然后我 运行 签名并在提示时输入新密码并被接受。

我验证了签名、上传构建、下载、安装并 运行 确保构建没有问题并且一切正常。所以我希望这个答案能帮助其他非 Apple 开发者使用他们的工具