xcrun notarytool API Key 凭据存储 invalidAsn1 错误解决方法
2024-11-22 14:46:32
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 是否准确,避免任何拼写错误或复制粘贴错误。
操作步骤:
- 登录 App Store Connect。
- 导航至“用户和访问” -> “密钥”。
- 确认使用的 Key ID 与你想要使用的 API Key 匹配。
解决方案二:检查 API Key 文件权限
.p8 文件的权限设置不正确也可能导致问题。确保只有当前用户拥有读取权限。
命令行指令:
chmod 400 ~/.appstoreconnect/private_keys/AuthKey_EED254PJNH.p8
操作步骤:
- 打开终端。
- 导航到 .p8 文件所在的目录。
- 执行上述命令,将权限设置为只读。
解决方案三:重新生成 API Key
如果以上方法都无效,尝试在 App Store Connect 中重新生成 API Key,并下载新的 .p8 文件。使用新的 Key ID 和 .p8 文件再次尝试 xcrun notarytool store-credentials
命令。
操作步骤:
- 登录 App Store Connect。
- 导航至“用户和访问” -> “密钥”。
- 撤销旧的 API Key。
- 创建新的 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"
操作步骤:
- 生成 App-Specific Password。 (在 Apple ID 网站的“安全”部分)
- 使用上述命令存储凭据。
安全建议
- 不要将 API Key 提交到版本控制系统。 将其存储在安全的位置,并限制访问权限。
- 定期轮换 API Key。 这有助于降低安全风险。
- 优先使用 API Key 进行身份验证,避免使用 App-Specific Password。 API Key 提供更细粒度的控制和更高的安全性。
通过以上步骤,你应该能够解决 xcrun notarytool store-credentials
使用 API Key 时遇到的 invalidAsn1
错误。请记住,维护 API Key 的安全至关重要,采取必要的预防措施保护你的账户和应用程序。