设置密钥分区列表codesign仍然提示密钥访问

我正在使用以下命令导入包含公钥和私钥的PEM文件,供我的代码签名身份使用:

 security import "${PEM_FILE}" -k ~/Library/Keychains/login.keychain -T /usr/bin/codesign -T /usr/bin/security 

OS X 10.11 El Capitan我可以在没有提示的情况下进行codesign

 codesign --force --sign "${IDENTITY_HASH}" --timestamp=none `mktemp` 

但是,正如其他人所说 , OS X 10.12 Sierra现在要求您在import之后set-key-partition-list

 security set-key-partition-list -S apple-tool:,apple: -s -k "${PASSWORD}" ~/Library/Keychains/login.keychain 

但是,即使在set-key-partition-list ,我仍然得到一个UI对话框,要求获得访问我的私钥来进行代码签名的权限:

“codesign想要访问键”对话框

如果我点击Always Allow ,那么未来的codesign调用不会提示,但我不希望该UI对话框提示。 我希望这一切都可以脚本化。

为什么set-key-partition-list为其他人工作,而不是为我?

在我原来的import命令中,我没有为我的钥匙串提供密码。 如果我为import命令提供密码, set-key-partition-list阻止显示对话框:

 security import "${PEM_FILE}" -k ~/Library/Keychains/login.keychain -P "${PASSWORD}" -T /usr/bin/codesign -T /usr/bin/security security set-key-partition-list -S apple-tool:,apple: -s -k "${PASSWORD}" ~/Library/Keychains/login.keychain 

然后codesign不显示对话框。 它只是工作!

 codesign --force --sign "${IDENTITY_HASH}" --timestamp=none `mktemp`