日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS 证书与签名 解惑详解

發布時間:2023/11/30 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS 证书与签名 解惑详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?

iOS 證書與簽名 解惑詳解

分類:?iPhone iosxcodecryptographyappleiphone測試

目錄(?)[+]

?

教程截圖:

??? 下面是一篇有澳洲墨爾本的一名全職iOS開發者提供的文章。他在論壇上是一個很摩登的年輕人?– Adam Eberbach。

  ·Bundle identifier

  ·provisioning profiles

  ·App ID

  ·certificate signing request

  對于新手,的確很難一口氣搞清楚這些東東到底有什么區別。

  下面我們來揭開它們的神秘面紗,在讀完這篇文章后,你應該可以把這些東西聯系起來,你能夠理解它們是怎么工作,并能夠順利地在device上運行你的應用了。

  當然,這里假設你已經是一個iOS開發者,擁有IDP,并已經有一定的xcode和iOS開發經驗了。如果你只是剛剛開始學習iOS,你可以先看看其它入門教程。

  好吧,我們開始了。

?

它們有多重要?

  Code signing?對你來說,最主要的意義就是它能讓你的App在設備上運行。不管是你自己的設備,甲方客戶的,還是在App store上購買你的消費者。

  如果沒有code signing,你只可以在模擬器上,或者一臺越獄過的機器上運行你的應用----當然,僅僅如此是不能滿足我們的。

  模擬器的測試僅僅是一種初步測試,模擬器不能替代真機調試,因為:

·真正的設備會通常比模擬器慢

  模擬器使用的是你的MAC機上的處理器,而一臺真正的iphone可遠遠沒有這種條件。所以如果你不在設備上真正運行,你可能就會忽略實際的性能問題。

  比如你新建一個ViewBased應用,然后在viewDidLoad里面加入下列代碼:

int count =200000; NSMutableArray * array = [NSMutableArray arrayWithCapacity:count]; for (int i =0; i < count; ++i) {[array addObject:[NSString stringWithFormat:@"%d", i]]; }

??? 上面這段代碼在模擬器上可能1-2秒就能運行完,但是在真機上面(比如iphone 3GS),大約要花7秒左右的時間。

·設備的內存少很多

  同理的,模擬器使用你MAC上的內存,而一臺真正的iphone的內存少得多。

  特別是游戲,通常會使用大量的圖片,占用大量的內存。在老一點型號的機器上,一個紋理圖片的大小上限是24MB,也就是1024X1024的8bit紋理圖。

  內存耗盡絕對是你不想見到的,因為占用的內存超過一定范圍,OS會強行退出你的app,對用戶來說,就認為是你的app崩潰了。

?

·有些API只在設備上有效

  譬如In-App purchase的API,或者Instrument中的Core Animation。這些都要在真機上測試出來。(可能以后版本的iOS或者xcode能夠支持,但畢竟真機測試是一種保障)

  總的來說,你沒有在真機上測試過,等于你沒有真的測試完。

·(譯者注:一些視覺上的效果在模擬器上看到的可能會與真機不一致)

?

  在Xcode中有一些懶人的方法:

  在organizer的界面中,選中devices?右鍵Developer Profile,你可以看到這樣一個菜單。

  里面有大部分這篇文章將要講到的內容。

  這里你可以sign in你的開發者賬號,自動登記你的app并運行到你的device上。

  當然,如果這樣總是好用的話,這篇文章就沒有意義了。

  作為一個開發者,你應該知道更多。

Public and Private Keys?公鑰私鑰

  在繼續剖析之前,我們先簡單地解析公鑰私鑰。

  這世上有兩種加密方法:symmetric cryptography?對稱密碼和?asymmetric cryptography非對稱密碼。

  對于對稱密碼,只有一種key。譬如你有一個密鑰,以及對應的一個加密過的信息。

  那只有知道密鑰的人可以解讀這個信息。

  對于非對稱密碼,有兩個key –?公鑰和私鑰。

?  譬如你用某個私鑰加密一些信息,別人收到這個信息后可以通過那個私鑰對應的公鑰來加密。這樣他們就可以肯定,這個信息是從你那里來的(至少是你加密的)。

  這個私鑰就相當于一個“簽名”。?(你加的密,就是你簽的字)

  而這個,就是在iOS中code signing背后的原理。

?

Code Signing Objects

  與Code Signing有關的東西有?:

  Provisioning Profiles,App IDs,UDIDs …

  在這一節,我們會一個一個地解說。

  我用Core Data繪制了一個圖表,用來描述這些對象之間的關系。

  這是針對開發人員的?(Development Profile),發布人員的圖會有小小區別。

?

私鑰?Private Key:

  在Mac OS X?以后,key由一個叫做?Keychain的app來管理。?你可以在?Application\Utilities?中找到。

運行Keychain,你可以看到在你的名下有哪些公鑰和私鑰。類似這樣的:

(這是私隱,要加碼的)

  如果你沒有看到任何key的列表,不用擔心。在你第一次使用認證的時候,Keychain會幫你創建。

  在這里列出的key是你的provisioning或者code signing的基礎。

  你必須有key才能sign code或者在App store中發布你的app。

  如果key丟失了?

  你必須把整個流程重新做一次?–?因為沒有key,你的認證不再有效,你的provisioning profile只會生成error。你會浪費很多時間,所以,好好保管它。

  如果你沒有備份過,我建議你馬上把它export出來,通過File\Export Items?,保存在一個安全的地方,例如一個很小的分區中?;蛘咄ㄟ^你的Mobile Me賬號來同步保存。

?

有多個Key?

  如果你在不同的Mac機上創建過account,你將會有多個key。

  這樣會帶來一個問題,在機器A上生成的認證,在沒有私鑰的機器B上會失效。

  所以,你可以把你所有的key復制到你所有的Mac機上。(這樣就不用煩了)

  或者,我更建議只用一個Key。

UDID

  UDID?(Unique Device Identifier)是區分物理設備的唯一標識。

  所有你的iPhone肯定有一個與眾不同的UDID,包括你的iPad等等。

  通常,UDID會是一個40位十六進制字符串。

  也就是下圖的identifier:

  如果App不是從app store上來,你的代碼需要有UDID的信息才能運行。

  怎么知道你擁有的設備的UDID?有幾個方法。

  1?如果你的設備連到Xcode的機器上,你可以在Organizer中看到UDID。

  2?沒有xcode的朋友也可以,在iTunes的?Summary界面,有serial number(序列號)的信息,點擊可以看到。

  3?這是最簡單的方法,在App Store中下載一個Ad Hoc Helper吧。

?

Certificate?認證

  認證,就是你的個人開發者認證,或者更華麗地說:“Apple Worldwide Developer Relations Certification Authority Certificate”(這不翻譯了),

  這個本質上就是一些代表著信任-授權的數據而已。

  獲取一個認證,你需要子啊Keychain Access中生成一個?Certificate Signing Request,并把它發給Apple。這會創建一對?公鑰-私鑰(如果還沒有的話)。

  Apple收到后會驗證信息,然后給你創建一個認證。

?

App ID

  在Xcode4中創建一個項目,你要提供?Product Name?和?Company Identifier的信息。

  Product Name,就是你的app的一個較短的名稱。

  Company identifier,通常會是一個反轉的DNS串,例如:com.mycompanyname

  這兩者合起來,就似乎Bundle Identifier。你會在Info.plist中找到。

  對于每一個你要發布的app,你需要到iTunes Developer Center中注冊你的App ID。如下圖。

  這個需要與你在Info.plist中設置的保持一致。?

Provisioning Profile

  把前面講到的東西合起來:

  ·App ID?(app的唯一標識)

  ·UDID?(在某臺設備上運行的唯一標識)

  ·Certificate?(開發者認證)

  就是所謂的Provisioning Profile。

?

  Provisioning Profile?通過xcode或者itunes導入到device中,或者打包到一個包含app和profile的.ipa文件中。

  你可以在iOS Provisioning Portal?中創建你的Provisioning Profile。

  新建一個,有一下幾個步驟:

  ·為profile命名,以后你會在xcode的organizer,Buid Settings?以及其它一些地方中看到

  ·選擇你的certificate

  ·選擇你的App ID,要如Info.plist中的一致。

  ·選擇要應用到的設備。通常,我都是把我的設備全選的。

?

個人用途的簽名?Signing

  假設你已經有一個準備測試的App,而你有IDP,并且處理好Provisioning Profile的事情了。

  現在你清楚已經知道它們的邏輯了,如果你新加入,下面這些是你要做的:

  1?檢查你的公鑰私鑰,為以后檢查方便,起個好名吧。

  2?用Keychain Access來創建你的開發認證。然后下載Apple給你的認證,雙擊安裝,然后你可以在Keychain中看到了吧。

  3?下載“Apple Worldwide Developer Relations Certification Authority Certificate”(WWDR)也是雙擊安裝,也可以到Keychain中看到。

  4?檢查你項目的Bundle ID,到Provisioning Portal中創建一個一致的App ID。

  5?在Provisioning Portal中加入你想要的UDID。(全部加上好了)

  6?針對你的Certificate創建Provisioning Profile,?指定你的app ID?和UDID。

  7?下載剛剛創建的Profile,拖到你的xcode Organizer中。

  然后,你就可以sign你的project,并讓它們在你的device上運行了。

  在Target – Build Settings?,往下滾動到?Code Signing一節。

  試試編輯一下Debug schema,它適合于團隊協作:

  在Automatic ProfileSelector中選擇“iPhone Developer”,你會看到你的認證已經自動選上了。

  一切都搞定了,連接你的device,在xcode中選擇Debug build,build & run。

  xcode會到你的設備里裝上這個provisioning profile,并運行你的App。

?

原文鏈接地址:http://www.cnblogs.com/andyque/archive/2011/08/30/2159086.html

轉載于:https://www.cnblogs.com/iOS-mt/p/4243230.html

總結

以上是生活随笔為你收集整理的iOS 证书与签名 解惑详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。