证书(Certificate)与描述文件(Provisioning Profiles)

  在使用脚本xcodebuild自动打包的时候,会用到签名证书和描述文件的UUID,很多时候大家不知道怎么正确的查看填写。下面介绍下如何得到正确配置。

一、正确获得证书“常用名称”

1、打开“钥匙串访问”

  在“Launch”中搜索“钥匙串访问”

2、找到你的证书,单击鼠标右键,单击“显示简介”

3、其中常用名称就是证书名称copy待用

二、得到对应证书的描述文件

   得到证书名称还不够还需要得到描述文件(Provisioning Profiles)

   每个用户有其相应的Provisioning Profiles配置目录在当前用目录中,我的目录如下

cd /Users/rongshenglai/Library/MobileDevice/Provisioning Profiles

   其中就是我所持有描述文件,但对应证书使用的是那个文件呢?我使用有两种方式

 

A、xcode下载证书

1、将现有的描述文件挪走,也就是让这个目录为空

2、回到xcde点击项目,在“Genernal”中重新选择一个签名文件

3、xcode会自动从apple下载这个证书的Provisioning Profiles,下载成功后回到刚才目录,目录中存在的就是这个证书的描述文件,复制文件名不包括“.mobileprovision”

B、xcode打包

1、 在xcode中选择“Product”->“Archive”打包

 2、打包完成后,点击鼠标右键选择“Show in Finder”

 

 3、在Finder中单击鼠标右键单击“终端”,当前目录即是打包好的文件存放的地址

4、进入embedded.mobileprovision存放目录查看embedded.mobileprovision文件

cd Products/Applications/aaaa.app/
vi embedded.mobileprovision

  其中UUID的内容就是要找的描述文件UUID

三、Provisioning Profile文件的说明

以下为典型供应配置文件 *.mobileprovision 的构成简析:

(1)Name:该mobileprovision的文件名。

(2)UUID:该mobileprovision文件的真实文件名。

(3)TeamName:Apple ID账号名。

(4)TeamIdentifier:Team Identity。

(5)AppIDName:explicit/wildcard App ID name(ApplicationIdentifierPrefix)。

(6)ApplicationIdentifierPrefix:完整App ID的前缀(TeamIdentifier.*)。

(7)DeveloperCertificates:包含了可以为使用该配置文件应用签名的所有证书<data><array>。

证书是基于 Base64 编码,符合 PEM(PrivacyEnhanced Mail, RFC 1848) 格式的,可使用 OpenSSL 来处理(opensslx509 -text -in file.pem)。

从 DeveloperCertificates 提取 <data></data> 之间的内容到文件 cert.cer(cert.perm):

-----BEGIN CERTIFICATE-----

将<data></data>之间的内容拷贝至此

-----END CERTIFICATE-----`

Mac 下右键 QuickLook 查看 cert.cer(cert.perm),在 Keychain Access 中右键 Get Info 查看对应证书 ios_development.cer,正常情况(公私钥 KeyPair 配对)应吻合;Windows 下没有足够信息(WWDRCA.cer),无法验证该证书。

如果你用了一个不在这个列表中的证书进行签名,无论这个证书是否有效,这个应用都将 CodeSign Fail。

(8)Entitlements 键<key>对应的<dict>:

keychain-access-groups:$(AppIdentifierPrefix),参见Code Signing Entitlements(*.entitlements)。

每个应用程序都有一个可以用于安全保存一些如密码、认证等信息的 keychain,一般而言自己的程序只能访问自己的 keychain。通过对应用签名时的一些设置,还可以利用keychain的方式实现同一开发者签证(就是相同bundle seed)下的不同应用之间共享信息的操作。比如你有一个开发者帐户,并开发了两个不同的应用A和B,然后通过对A和B的 keychain access group 这个东西指定共用的访问分组,就可以实现共享此 keychain 中的内容。

application-identifier:带前缀的全名,例如$(AppIdentifierPrefix)com.apple.garageband。

com.apple.security.application-groups:App Group ID(group. com.apple),参见Code Signing Entitlements(*.entitlements)。

com.apple.developer.team-identifier:同Team Identifier。

(9)ProvisionedDevices:该mobileprovision授权的开发设备的UDID <array>。

参考文档:

  https://blog.csdn.net/potato512/article/details/52180916

  https://www.cnblogs.com/ym123/p/4292002.html

  https://blog.csdn.net/phunxm/article/details/42685597/

猜你喜欢

转载自www.cnblogs.com/rslai/p/9291159.html