set-key-partition-list codesign仍然提示密钥访问

Hea*_*ers 5 security macos keychain ios macos-sierra

PEM使用以下命令导入包含公钥和私钥的文件,用于我的代码签名标识:

security import "${PEM_FILE}" -k ~/Library/Keychains/login.keychain -T /usr/bin/codesign -T /usr/bin/security
Run Code Online (Sandbox Code Playgroud)

OS X 10.11 El Capitan然后我可以codesign不用提示:

codesign --force --sign "${IDENTITY_HASH}" --timestamp=none `mktemp`
Run Code Online (Sandbox Code Playgroud)

然而,正如其他人已经提到,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
Run Code Online (Sandbox Code Playgroud)

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

如果我单击Always Allow,则未来的codesign调用不会提示,但我不希望该UI对话框提示.我希望这一切都是可编写脚本的.

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

Hea*_*ers 9

在我的原始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
Run Code Online (Sandbox Code Playgroud)

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

codesign --force --sign "${IDENTITY_HASH}" --timestamp=none `mktemp`
Run Code Online (Sandbox Code Playgroud)

  • 嘿@HeathBorders,我不明白你的回答。“import”命令的“-P”是证书本身的密码,而不是钥匙串的密码。如果我在这里输入钥匙串密码,它将无法导入,因为我的钥匙串和“.p12”文件没有相同的密码。 (2认同)

归档时间:

查看次数:

2682 次

最近记录:

8 年,4 月 前