当前位置: 首页 > 面试题库 >

在将Jenkins / Hudson用作iOS和Mac开发的持续集成时,缺少钥匙串中的证书和密钥

华宪
2023-03-14
问题内容

我正在尝试改进适用于iOS的Hudson CI,并在系统启动后立即启动Hudson。为此,我使用以下启动脚本:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>Hudson CI</string>
    <key>ProgramArguments</key>
    <array>
    <string>/usr/bin/java</string>
    <string>-jar</string>
    <string>/Users/user/Hudson/hudson.war</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>UserName</key>
    <string>user</string>
</dict>
</plist>

这可以正常工作,但是当由Hudson启动的xcodebuild尝试对应用程序进行签名时,它失败了,因为它无法在钥匙串中找到正确的钥匙/证书。但是,这里有密钥/证书对,因为如果我从命令行启动Hudson,它就可以正常工作。

您有什么想法为什么会发生吗?


问题答案:

在花了数小时和几天的时间解决此问题后,我发现了一个相当简单的解决方案。如上所述,在启动的配置中是否有不同的用户名并不重要:

<key>UserName</key>
<string>user</string>

缺少的证书和密钥必须位于系统密钥链(/Library/Keychains/System.keychain)上。我设置了执行几个securityshell调用的jenkins作业后,发现了这一点。有趣的是security list-keychains

+ security list-keychains
    "/Library/Keychains/System.keychain"
    "/Library/Keychains/applepushserviced.keychain"
    "/Library/Keychains/System.keychain"

这就是詹金斯将搜索证书和密钥的钥匙串,因此它们应该在那里。在我将证书移到那里之后,它就可以工作了。确保您还将“
Apple全球开发者关系证书颁发机构”证书复制到系统钥匙串,否则将显示CSSMERR_TP_NOT_TRUSTED错误消息codesign

也可以向注册更多的钥匙串security list-keychains -s [path to additional keychains]。我还没有尝试过,但是像security list-keychains -s $HOME/Library/Keychains/login.keychain在jenkins中执行构建外壳程序之类的东西可能会起作用。

编辑: 我试图将用户钥匙串添加到搜索路径,-s但我无法使其正常工作。因此,现在,我们必须将我们的证书和密钥复制到系统密钥链中。



 类似资料:
  • 登录和钥匙串验证 macOS Sierra (10.12) 搭载了改进的智能卡集成,包括对 SmartCard Extensions1 的支持,更新的 CCID 驱动和对 PC/SC framework2. 的修复。这些可以为使用 Yubikey 登录到 macOS 提供一个清晰简洁的配置。 如果插入已经配对的 Yubikey,钥匙串相关的登录操作会显示一个 PIN 占位符(而不是密码)。 参考资

  • translated_page: https://github.com/PX4/Devguide/blob/master/en/test_and_ci/jenkins_ci.md translated_sha: 95b39d747851dd01c1fe5d36b24e59ec865e323e Jenkins CI Jenkins continuous integration server on S

  • 我想生成一个自签名的可信证书和一个csr,并用创建的可信证书对csr进行签名。我正在用keytool尝试它。在使用以下命令创建受信任证书的第一步中 keytool-list-v-keystore cert/test.keystore 使用上面的“genkey”命令创建的证书的条目类型为“privatekeyentry”,如何创建可信的证书条目?

  • translated_page: https://github.com/PX4/Devguide/blob/master/en/test_and_ci/continous_integration.md translated_sha: 95b39d747851dd01c1fe5d36b24e59ec865e323e PX4 Continuous Integration PX4 builds and

  • 概述 此文章以以下环境为例,介绍毫末科技Weex的持续集成过程。为了简化公司员工的工作量,将一些环境配置的过程省略,只介绍新项目的配置过程。 GitLab 10.5.5 Jenkin 2.60.3 公司的Jenkins平台管理员:管鹏波。若要申请账号或者碰到问题,请联系管鹏波(guanpengbo@haomo-studio.com)! 配置过程 包括三步: 将jenkins的公钥添加为GitLab

  • 我有一个DER格式的证书文件和一个DER格式的密钥文件,密钥是加密的。 我想创建一个包含PEM格式的cert和加密密钥的cer文件,如下所示: 我可以使用以下命令获得PEM格式的证书: 我还可以使用以下命令获取PEM格式的未加密密钥: 这将创建一个以以下开头的文件: -----开始RSA私钥----- 然而,我找不到一个方法让它开始 开始加密私钥 这样我就可以连接两个文件并获得证书。 你知道我能做