使用用户 _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"
钥匙串是动态创建的,包含一个私钥和一个证书。
这曾经很好用,但从 macOS Sierra (10.12) 开始,codesign 在查找证书时不再在其 钥匙串搜索列表 中包含自定义钥匙串(虽然可以访问私钥)。
手动将钥匙串添加到搜索列表有帮助(至少作为普通用户):
security list-keychains -s "previous_keychain_path" "custom_keychain_path"
(之前的搜索列表是先用“security list-keychains”获取的)
但在以 _www 或 daemon 用户身份运行 apache/httpd 时会忽略此命令。
_www临时修改钥匙串搜索列表需要什么样的权限? 还有其他方法可以让 codesign 像 Sierra 之前那样支持 --keychain 选项吗?【问题讨论】:
【参考方案1】:我想你的 CI 系统是由 LaunchDaemon 启动的。
你必须添加
<key>SessionCreate</key>
<true/>
到 LaunchDaemon
此修改允许 CI 系统修改钥匙串搜索列表。
【讨论】:
虽然此代码可能会回答问题,但提供有关其解决问题的方式和/或原因的附加上下文将提高答案的长期价值。Read this。 对不起,这是我能提供的最佳答案。我不是 MacOS 专家。问题是关于这个主题的答案很少或没有。我认为有些答案总比没有好。 谢谢您,这是很好的输入!它并没有按照我的想法解决问题,但它是一个非常有价值的提示。以上是关于使用用户 _www 或守护进程设置 macOS 钥匙串搜索列表的主要内容,如果未能解决你的问题,请参考以下文章