Command line 如何通过命令行为iOS开发安装开发者证书/私钥和配置文件?

Command line 如何通过命令行为iOS开发安装开发者证书/私钥和配置文件?,command-line,ios,sdk,keychain,Command Line,Ios,Sdk,Keychain,我正在为iOS应用程序项目配置自动生成服务器。 我做了大部分。现在是最后一轮了。保安 开发者证书/私钥和配置文件可以通过GUI轻松安装到密钥链中。但我想通过命令行来实现这一点,以自动化配置过程通过命令行导出/导入证书、私钥、配置文件。 如果您有任何建议,我们将不胜感激。我从以下方面得到了提示: 该命令是安全。我在看手册页。我将在试用后更新此答案:) --(编辑)-- 首先,我们必须手动授予对密钥链中的证书/密钥的“始终允许”访问权限一次。我不知道没有GUI怎么做 在为每个会话运行构建工具之前,

我正在为iOS应用程序项目配置自动生成服务器。 我做了大部分。现在是最后一轮了。保安

开发者证书/私钥和配置文件可以通过GUI轻松安装到密钥链中。但我想通过命令行来实现这一点,以自动化配置过程通过命令行导出/导入证书、私钥、配置文件。

如果您有任何建议,我们将不胜感激。

我从以下方面得到了提示:

该命令是
安全
。我在看手册页。我将在试用后更新此答案:)

--(编辑)--

首先,我们必须手动授予对密钥链中的证书/密钥的“始终允许”访问权限一次。我不知道没有GUI怎么做


在为每个会话运行构建工具之前,请先运行命令
security unlock keychain
。我使用了SSH,所以每次登录会话都必须执行一次。由于codesign没有获得访问您的私钥的acl,因此总是允许GUI被触发。试试这个:

security unlock-keychain -p <my keychain password>
security import Certificate.p12 -k ~/Library/Keychains/login.keychain -P password -T /usr/bin/codesign
安全解锁钥匙链-p
安全导入证书.p12-k~/Library/Keychains/login.keychain-P password-T/usr/bin/codesign

-T标志告诉安全性允许codesign访问您在Certificate.p12中导入的密钥。

使用命令行安装证书:

security unlock-keychain -p <machine login password>
security import my_certificate.p12 -k ~/Library/Keychains/login.keychain -P my_password -T /usr/bin/codesign
复杂的方式:

PROVISION_FILE ="my_profile.mobileprovision"

uuid=`security cms -D -i ${PROVISION_FILE } | grep -aA1 UUID | grep -o "[-a-zA-Z0-9]\{36\}"`

cp "$PROVISION_FILE " ~/Library/MobileDevice/Provisioning\ Profiles/$uuid.mobileprovision

您是否找到了安装资源调配配置文件的方法?我已经确定了证书的位置,但另一个位置仍然没有找到…是的,这也是我一直在寻找的。我想指出,在尝试运行上述命令时,遇到错误消息“security:seckeychainitemport:不允许用户交互”。我忘了打开钥匙链。啊!运行“安全解锁钥匙链”使它像一个魔咒一样工作。这就像预期的一样工作,但我需要多一点。。。我的证书+密钥对不是最初的苹果产品,而是我们为内部开发人员创建的自签名证书(我们不希望他们的机器上有真正的私钥)。现在,我还需要将密钥链配置为始终信任证书。我知道如何在GUY中实现这一点,我还知道如何通过以下方式添加(导入+信任)可信证书:security add trusted cert-k/Library/Keychains/System.keychain-d XXXX.cer--但是,该命令不适用于.p12文件。知道我该怎么做吗?更新:对于maOS Sierra,您可能应该遵循Ilian Iliev的流程:要提供“始终允许”访问权限,请在添加证书和密钥时使用-A开关打开
安全导入
。不建议使用-A选项,因为它允许任何应用程序使用这些证书。为了更安全,请使用上述
-T/usr/bin/codesign
选项。这将允许特定的应用。有关其他选项,请参见
security import--help
PROVISION_FILE ="my_profile.mobileprovision"

uuid=`security cms -D -i ${PROVISION_FILE } | grep -aA1 UUID | grep -o "[-a-zA-Z0-9]\{36\}"`

cp "$PROVISION_FILE " ~/Library/MobileDevice/Provisioning\ Profiles/$uuid.mobileprovision