set-key-partition-list codesign 之后还是提示key access

After set-key-partition-list codesign still prompts for key access

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

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`

但是,由于 have OS X 10.12 Sierra 现在要求您 set-key-partition-listimport 之后:

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

然而,即使在 set-key-partition-list 之后,我仍然会收到一个 UI 对话框,请求允许访问我的私钥以进行代码签名:

如果我单击 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`