从macOS Sierra开始,如果没有usr / bin / codesign UI提示使用此身份进行访问的提示,我将无法再使用/ usr / bin / security将代码符号身份导入到钥匙串中。这破坏了构建服务器的打包脚本。似乎没有解决方法。这会影响自定义创建的钥匙串,还会影响login.keychain。
重现步骤:在终端中执行以下命令(需要签名身份才能导入):
security create-keychain -p test buildagent.keychain
security unlock-keychain -p test buildagent.keychain
security list-keychains -d user -s buildagent.keychain
security default-keychain -s buildagent.keychain
security import identity.p12 -k buildagent.keychain -P password -T /usr/bin/codesign
codesign -vfs '$IDENTITY' '${PRODUCT}' --keychain 'buildagent.keychain'
结果:macOS显示一个UI提示符,询问是否允许访问先前导入的私钥。
我尝试了许多解决方法,但似乎没有任何效果:
- 指定钥匙串名称时使用新的.keychain-db扩展名
- 使用login.keychain代替自定义的
- 用-A导入p12(“允许任何应用程序访问导入的密钥”)
- 分别导入证书和密钥(在使用openssl pkcs12之前已从p12中提取)
导入身份肯定行得通,在“钥匙串访问”应用程序中显示钥匙串的内容时,我可以看到证书和密钥。还正确配置了私钥的访问控制设置(使用所需的代码签名例外规则)。
如何避免Sierra的UI提示?
Always allow
然后CLI才能正常运行。