1. 程式人生 > >證書(Certificate)與描述文件(Provisioning Profiles)

證書(Certificate)與描述文件(Provisioning Profiles)

itl 下載證書 html library com x509 highlight 重新 app id

  在使用腳本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/

證書(Certificate)與描述文件(Provisioning Profiles)