iOS 用于启动 Tomcat 和 Jenkins 的非特权用户的默认钥匙串

iOS default keychain for unprivileged user used to start Tomcat and Jenkins

我创建了一个非特权用户来启动 Tomcat 8 作为一项服务。 Tomcat 运行 Jenkins,它用于提供工作,我的团队成员可以在其中上传 .ipa 文件和配置文件并重新签署 .ipa 文件。每当 Jenkins 重新签署 .ipa 文件时,它都是 运行 一个 shell 脚本。该 shell 脚本最近更新,现在调用安全命令,导致以下错误:

security: cert import failed: a default keychain could not be found.

我需要为我的非特权 Tomcat 用户设置默认钥匙串。

我该怎么做?我在网上没有看到太多关于它的信息,我看到另一个关于该主题的未回答的 Whosebug post。

我找到了一个解决方法,这是一个更好的解决方案。我能够使用以下动态创建新的钥匙串,将证书添加到钥匙串,然后删除钥匙串:

security create-keychain -p temp "temp.keychain"
security add-certificates -k "temp.keychain" "ios_distribution.cer"
security unlock-keychain -p temp "temp.keychain"

security cms -D -k "temp.keychain" -i "blah.mobileprovision" > <entitlements>

...do some stuff...

security delete-keychain -h "temp.keychain"

如果确实要为非特权用户设置钥匙串,可以使用以下命令:

default-keychain [-h] [-d user|system|common|dynamic] [-s [keychain]]

例如

default-keychain -h "temp.keychain"

您可以 运行 来自非特权用户正在执行的 shell 脚本的命令(就像我正在做的那样)。