我们在 macOS 上对 CI 系统使用 codesign 命令:
codesign -v -f -s "identity" "file" --keychain "keychain_path"
密钥链是动态创建的,包含私钥和证书。
这曾经工作得很好,但从macOS Sierra (10.12(开始,codesign 在查找证书时不再将自定义钥匙串包含在其钥匙串搜索列表中(尽管访问私钥有效(。
手动将钥匙串添加到搜索列表会有所帮助(至少作为普通用户(:
security list-keychains -s "previous_keychain_path" "custom_keychain_path"
(其中以前的搜索列表首先使用"安全列表钥匙串"获取(
但是当以_www或守护程序用户身份运行apache/httpd时,此命令将被忽略。
- _www临时修改钥匙串搜索列表需要什么样的权限?
- 有没有另一种方法可以让协同设计支持--keychain选项,就像在Sierra之前一样?
我想你的CI系统是由LaunchDaemon启动的。
你必须添加
<key>SessionCreate</key>
<true/>
到 LaunchDaemon
此修改允许 CI 系统修改钥匙串搜索列表。