返回

xcrun notarytool API Key 凭据存储 invalidAsn1 错误解决方法

IOS

xcrun notarytool 使用 API Key 存储凭据失败的解决方法

使用 API Key 通过 xcrun notarytool store-credentials 命令存储 notarization 凭据有时会遇到 invalidAsn1 错误。本文将分析可能的原因并提供解决方案。

问题分析

invalidAsn1 错误通常表明 API Key 的格式或使用方式存在问题。xcrun notarytool 使用 JSON Web Token (JWT) 与 Apple Notary 服务进行身份验证。 JWT 的生成依赖于 API Key (一个.p8 文件) 和其对应的 Key ID。任何格式错误或密钥不匹配都会导致 invalidAsn1 错误。

解决方案一: 检查 API Key 文件和 Key ID

首先,确认使用的 .p8 文件和 Key ID 对应 App Store Connect 中创建的 API Key。仔细检查 Key ID 是否准确,避免任何拼写错误或复制粘贴错误。

操作步骤:

  1. 登录 App Store Connect。
  2. 导航至“用户和访问” -> “密钥”。
  3. 确认使用的 Key ID 与你想要使用的 API Key 匹配。

解决方案二:检查 API Key 文件权限

.p8 文件的权限设置不正确也可能导致问题。确保只有当前用户拥有读取权限。

命令行指令:

chmod 400 ~/.appstoreconnect/private_keys/AuthKey_EED254PJNH.p8 

操作步骤:

  1. 打开终端。
  2. 导航到 .p8 文件所在的目录。
  3. 执行上述命令,将权限设置为只读。

解决方案三:重新生成 API Key

如果以上方法都无效,尝试在 App Store Connect 中重新生成 API Key,并下载新的 .p8 文件。使用新的 Key ID 和 .p8 文件再次尝试 xcrun notarytool store-credentials 命令。

操作步骤:

  1. 登录 App Store Connect。
  2. 导航至“用户和访问” -> “密钥”。
  3. 撤销旧的 API Key。
  4. 创建新的 API Key,并下载新的 .p8 文件。

解决方案四:使用 App-Specific Password (临时解决方案)

虽然使用 App-Specific Password 不是最佳实践,但在紧急情况下可以作为临时解决方案。这种方法绕过了 API Key 的使用,直接使用 Apple ID 和密码进行身份验证。

命令行指令:

xcrun notarytool store-credentials "MY_PROFILE" \
--apple-id "[email protected]" \
--team-id "XYG5LGJ29X" \
--password "your_app_specific_password"

操作步骤:

  1. 生成 App-Specific Password。 (在 Apple ID 网站的“安全”部分)
  2. 使用上述命令存储凭据。

安全建议

  • 不要将 API Key 提交到版本控制系统。 将其存储在安全的位置,并限制访问权限。
  • 定期轮换 API Key。 这有助于降低安全风险。
  • 优先使用 API Key 进行身份验证,避免使用 App-Specific Password。 API Key 提供更细粒度的控制和更高的安全性。

通过以上步骤,你应该能够解决 xcrun notarytool store-credentials 使用 API Key 时遇到的 invalidAsn1 错误。请记住,维护 API Key 的安全至关重要,采取必要的预防措施保护你的账户和应用程序。