在我们的构建环境中,我们使用security cms -D -i
如下命令解压 .mobileprovision 配置文件https://developer.apple.com/documentation/technotes/tn3125-inside-code-signing-provisioning-profiles和https://www.objc.io/issues/17-security/inside-code-signing/。
/usr/bin/security cms -D -i our_profile.mobileprovision
有时它会失败并在 stderr 中显示以下文本:
security: cert import failed: UNIX[Operation not permitted]
security: problem decoding
添加-v
标志并不能使其更清晰:
received commands
Got default certdb
security: cert import failed: UNIX[Operation not permitted]
security: problem decoding
有人知道这是什么吗?可能的原因是什么?可以解决吗?
我检查了 SIP,发现它已被禁用。我检查了默认钥匙串和目录权限:
Default keychain of security: /Users/isandbox/Library/Keychains/login.keychain-db
Info about file: /Users/isandbox/Library/Keychains/login.keychain-db
Permissions: -rw-r--r-- (0o100644)
Size: 67472 bytes
Info about file: /Users/isandbox/Library/Keychains
Permissions: drwx------ (0o40700)
当“安全”失败时和正常运行时,所有这些都是一样的。
答案1
当我禁用多个进程对“security cmd”的并行调用时,这个问题莫名其妙地停止了重现。看来 security util 存在一些竞争条件。当这种情况发生时,没有一个并行进程能够幸运地成功完成。
更新:不幸的是,这只是暂时现象。后来我们发现该错误仍在重现。可能出现的频率会降低,但并未修复。