在 set-key-partition-list codesign 后仍然提示输入密钥
Posted
技术标签:
【中文标题】在 set-key-partition-list codesign 后仍然提示输入密钥【英文标题】:After set-key-partition-list codesign still prompts for key access 【发布时间】:2017-03-24 14:50:19 【问题描述】:我正在使用以下命令导入包含我的代码签名身份的公钥和私钥的 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`
但是,由于others 有mentioned,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 对话框,要求我有权访问我的私钥以进行代码签名:
如果我点击Always Allow
,那么未来的codesign
调用不会提示,但我不希望那个 UI 对话框提示。我希望这一切都可以编写脚本。
为什么set-key-partition-list
为其他人工作,而不是为我工作?
【问题讨论】:
【参考方案1】:在我原来的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`
【讨论】:
如何获得"$IDENTITY_HASH"
的codesign
命令?抱歉,我是 ios 开发新手...
security find-identity -v
将列出您的所有身份。 IDENTITY_HASH
是第一个列出的 41 个字符的哈希值。您可能想要一个名称以 iPhone Developer
或 iPhone Distribution
开头的名称,具体取决于您是要签名以进行开发还是分发。
Heath Borders,我在本地系统中尝试了 xcode verison 9.0 和 os mac high sierra 10.13,但仍然弹出确认对话框
嘿@HeathBorders,我不明白你的回答。 import
命令的 -P
是证书本身的密码,而不是钥匙串的密码。如果我在这里输入钥匙串密码,它将无法导入,因为我的钥匙串和.p12
文件没有相同的密码。
关于-T; $安全导入--帮助; -T 指定可以访问导入密钥的应用程序(允许多个 -T 选项)以上是关于在 set-key-partition-list codesign 后仍然提示输入密钥的主要内容,如果未能解决你的问题,请参考以下文章
NOIP 2015 & SDOI 2016 Round1 & CTSC 2016 & SDOI2016 Round2游记