使用用户 _www 或守护进程设置 macOS 钥匙串搜索列表

Posted

技术标签:

【中文标题】使用用户 _www 或守护进程设置 macOS 钥匙串搜索列表【英文标题】:Setting macOS keychain search list with user _www or daemon 【发布时间】:2018-10-20 10:40:48 【问题描述】:

我们在 macOS 上将 codesign 命令用于 CI 系统:

codesign -v -f -s "identity" "file" --keychain "keychain_path"

钥匙串是动态创建的,包含一个私钥和一个证书。

这曾经很好用,但从 ma​​cOS Sierra (10.12) 开始,codesign 在查找证书时不再在其 钥匙串搜索列表 中包含自定义钥匙串(虽然可以访问私钥)。

手动将钥匙串添加到搜索列表有帮助(至少作为普通用户):

security list-keychains -s "previous_keychain_path" "custom_keychain_path"

(之前的搜索列表是先用“security list-keychains”获取的)

但在以 _wwwdaemon 用户身份运行 apache/httpd 时会忽略此命令。

_www临时修改钥匙串搜索列表需要什么样的权限? 还有其他方法可以让 codesign 像 Sierra 之前那样支持 --keychain 选项吗?

【问题讨论】:

【参考方案1】:

我想你的 CI 系统是由 LaunchDaemon 启动的。

你必须添加

<key>SessionCreate</key>
<true/> 

到 LaunchDaemon .plist 文件。

此修改允许 CI 系统修改钥匙串搜索列表。

【讨论】:

虽然此代码可能会回答问题,但提供有关其解决问题的方式和/或原因的附加上下文将提高​​答案的长期价值。Read this。 对不起,这是我能提供的最佳答案。我不是 MacOS 专家。问题是关于这个主题的答案很少或没有。我认为有些答案总比没有好。 谢谢您,这是很好的输入!它并没有按照我的想法解决问题,但它是一个非常有价值的提示。

以上是关于使用用户 _www 或守护进程设置 macOS 钥匙串搜索列表的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到 macOS 上的 Docker 守护进程

如何加载系统守护进程在MacOS问题,怎么解决

Linux下怎么查看某个守护进程或者所有的守护进程?

5.1.6 守护进程daemon

第7章 进程关系_守护孤儿和僵尸进程

守护进程