小编Sve*_*ker的帖子

Sierra中的安全性/协同设计:Keychain忽略访问控制设置和UI提示以获得许可

从macOS Sierra开始,我无法在没有usr/bin/codesign UI的情况下使用/ usr/bin/security将codeign-identity导入到钥匙串中,以便在使用此标识时提示访问.这打破了构建服务器的打包脚本.似乎没有解决方法.这会影响自定义创建的钥匙串,但也会影响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'
Run Code Online (Sandbox Code Playgroud)

结果:macOS显示UI提示,要求获得访问先前导入的私钥的权限.

我尝试了很多解决方法,但似乎没有任何工作:

  • 指定keychain-name时使用新的.keychain-db扩展名
  • 使用login.keychain而不是自定义的
  • 使用-A导入p12('允许任何应用程序访问导入的密钥')
  • 单独导入Cert und Key(使用openssl pkcs12从p12中提取)

导入身份肯定有效,我可以在Keychain Access应用程序中显示钥匙串的内容时看到证书和密钥.私钥的访问控制设置也已正确配置(使用所需的代码签名例外规则).

如何避免来自Sierra的UI提示?

macos keychain codesign ios macos-sierra

68
推荐指数
4
解决办法
3万
查看次数

标签 统计

codesign ×1

ios ×1

keychain ×1

macos ×1

macos-sierra ×1