iOS證書相關(guān)問題詳解、真機(jī)調(diào)試劈伴、無線調(diào)試

在開始之前先了解一下相關(guān)知識(shí)密末。
公開密鑰加密:

公開密鑰加密也稱作“非對(duì)稱加密”是一種使用不同密鑰進(jìn)行加密和解密的加密方法握爷,用于加密的密鑰稱為公開密鑰(公鑰),用于解密的密鑰稱為,秘密密鑰(私鑰)严里。

約定前提:公鑰加密的信息只能由私鑰解密新啼。

  • 接受方B生成一對(duì)密鑰,將公鑰公開到互聯(lián)網(wǎng)上刹碾,私鑰秘密保存燥撞。
  • 發(fā)送方A用B公開的公鑰加密原始信息,然后將秘文發(fā)送給B迷帜,B用私鑰解密的到原始信息物舒。

這就解釋了非對(duì)稱加密
如果反過來,使用私鑰加密戏锹,公鑰解密這就變成了“數(shù)字簽名”

數(shù)字簽名:

非對(duì)稱加密過程中公鑰加密私鑰解密」诳瑁現(xiàn)在反過來,私鑰加密公鑰解密锦针。由于公鑰是公開的荠察,所以所有人都能通過公鑰解出密文,這樣的加密是毫無意義的奈搜。但是從另一種角度來看悉盆,你可以看到密文的創(chuàng)建者保證是擁有密鑰的一方,這不就像“簽名”嗎媚污。

在“數(shù)字簽名中”舀瓢,只有A方可以做的密文可以用作“簽名”。由于信息的加密過程需要時(shí)間耗美,為了縮短時(shí)間首先找到信息的哈希值(摘要算法)京髓,然后加密哈希值并將其用于簽名。

簽名過程:

  • 首先A方準(zhǔn)備一對(duì)密鑰(公鑰和私鑰)和想要發(fā)送的信息商架,把私鑰公開或者發(fā)送給接收方B堰怨。
  • A方用私鑰加密信息,將信息和加密后的密文一起發(fā)送出去蛇摸。
  • 接受方B收到信息备图、公鑰,用公鑰驗(yàn)證信息得到的密文和收到的密文匹配赶袄。由此B可以證實(shí)信息的發(fā)送方A發(fā)送揽涮,并且沒有被偽造。

這就解釋了數(shù)字簽名饿肺。

數(shù)字證書:

數(shù)字簽名提供驗(yàn)證蒋困,偽造檢測和防止否認(rèn)的功能,但是存在一個(gè)問題就是公開密鑰中沒有任何信息表示創(chuàng)建者是誰敬辣。這個(gè)問題可以通過“數(shù)字證書”系統(tǒng)來解決雪标。

對(duì)數(shù)字證書通俗的理解零院,就像這樣的一張電子證書:
image

數(shù)字證書機(jī)制:

  • 首先A方需要要求認(rèn)證機(jī)構(gòu)CA頒發(fā)證書,證明A方是公開密鑰的所有者村刨。認(rèn)證機(jī)構(gòu)是管理數(shù)字證書的組織告抄,像政府或者大公司那樣值得信賴的組織都可以成為管理數(shù)字證書的組織。

  • 認(rèn)證機(jī)構(gòu)CA準(zhǔn)備一對(duì)密鑰嵌牺,A方準(zhǔn)備好自己的個(gè)人信息打洼、公開密鑰、電子郵件等信息髓梅,將其發(fā)送給認(rèn)證機(jī)構(gòu)拟蜻,認(rèn)證機(jī)構(gòu)CA用私鑰給A方的相關(guān)信息創(chuàng)建數(shù)字簽名,創(chuàng)建的數(shù)字簽名和數(shù)據(jù)做成單個(gè)文件后發(fā)送給A方枯饿,該文件之后就是A方的數(shù)字證書。

  • 接下來A將數(shù)字證書代替公鑰發(fā)送給B或者公開诡必。

  • B方收到A方的證書奢方,從中得知證書信息屬于A方。B方驗(yàn)證數(shù)字證書中的數(shù)字簽名來自認(rèn)證機(jī)構(gòu)CA(證書中的簽名信息只能使用認(rèn)證機(jī)構(gòu)的公開密鑰進(jìn)行驗(yàn)證)爸舒,如果驗(yàn)證沒問題蟋字,就可以確定該數(shù)字證書由認(rèn)證機(jī)構(gòu)CA簽發(fā)。

  • 由于已經(jīng)確認(rèn)該數(shù)字證書可信扭勉,也就可以認(rèn)為證書中的數(shù)字簽名屬于A方鹊奖,進(jìn)而從數(shù)字簽名中提取A方的公開密鑰。

由此涂炎,公開密鑰交付完成忠聚。

通過數(shù)字證書系統(tǒng),就可以驗(yàn)證公鑰的所有者唱捣。如果證書不受信任两蟀,B方?jīng)]理由相信未經(jīng)驗(yàn)證的公鑰。


iOS 開發(fā)證書相關(guān)問題

對(duì)數(shù)字證書系統(tǒng)了解了之后震缭,然后看iOS證書申請(qǐng)過程赂毯。
必須條件:

  • 已經(jīng)加入Apple開發(fā)者計(jì)劃的apple賬號(hào)(交過費(fèi)的賬號(hào))。
  • MAC系統(tǒng)的電腦(黑蘋果也可以)拣宰,MAC系統(tǒng)電腦自帶Keychain Access党涕。
  1. 證書請(qǐng)求文件(CSR)文件,證書請(qǐng)求文件

CSR巡社,全稱為:Certificate Signing Request膛堤,證書請(qǐng)求文件的縮寫。

為了確保我提供的信息在互聯(lián)網(wǎng)的傳輸過程中不會(huì)被有意或者無意的破壞掉重贺,我們有如下的機(jī)制來對(duì)傳輸?shù)膬?nèi)容進(jìn)行保護(hù):首先在本地生成一對(duì)密鑰(私鑰+公鑰)骑祟,用私鑰對(duì)“我們需要提供的信息“進(jìn)行加密回懦,從而生成證書請(qǐng)求文件(.csr), 這個(gè)證書請(qǐng)求文件其實(shí)就是私鑰對(duì)應(yīng)的公鑰證書的原始文件,里面含有對(duì)應(yīng)的公鑰信息,郵件,...

Mac下的CSR文件從鑰匙串創(chuàng)建方式:官方文檔次企。創(chuàng)建完成怯晕,試著解析出來的的內(nèi)容大致如下:

 域名:xxxx
 組織/公司名稱:xxxx
 部門/單位:xxxx
 國家:CN
 郵箱:name@example.com
 加密強(qiáng)度:2048
 公共密鑰:
 -----BEGIN PUBLIC KEY-----
 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA216nTo1ce9tJcuZwkpk1
 2Td9vd0fznXCD22U+AFzzWCMuDWS0vz58DWJt7yWpUlpvn4qR36tLUnvv6gyQNoA
 NE/Uta886j+fslZPna1katPBQ/A0r0M1JeMgVhTaHDDSH7gqF61VsYrJ5hjYR1NG
 +l3bZoXFmSRAEU4SwEwFMduG/RdUdubHfy0/Sh74mty/n/7zRJuccq++30Mf4CIv
 WrJs99rUmzXS9KRjbWM0cI3nNdp8IorZ0FEhY567Kgj4gpvWK3CvU9Tp2oeDmxrW
 57GZnHEposEe1MTXvDrQJI9MzEpyVQ1aWiO6eT0Ro2lP1/YQpbmeWMAECddyvAVY
 OQIDAQAB
 -----END PUBLIC KEY-----
  1. 創(chuàng)建好之后就去apple開發(fā)者中心創(chuàng)建對(duì)應(yīng)的證書。最后下載下來創(chuàng)建好的證書缸棵,雙擊就自動(dòng)添加到鑰匙串了舟茶。

在 Mac 上的“鑰匙串訪問” 中,選擇一個(gè)鑰匙串堵第,然后點(diǎn)按“我的證書”或“證書”類別來查看該鑰匙串中的證書吧凉。選擇想要查看的證書,然后點(diǎn)按工具欄中的“簡介”按鈕 踏志。您也可以連按想要查看的證書阀捅。

連按查看證書的效果:

 主題名稱:
 用戶ID: com.xxxx.xxxx
 常用名稱:Apple Sandbox Push Services:com.xxxx.xxxx
 組織單位: xxxxxxxx
 國家或地區(qū):CN
 簽發(fā)者名稱:
 常用名稱: Apple Worldwide Developer Relations Certification Authority
 組織單位:G4
 組織: Apple Inc.
 國家或地區(qū):US
 序列號(hào):xxxxxxxxxxxxxxx
 版本:3
 簽名算法:帶RSA加密的SHA-256
 參數(shù):無
 在此之前無效: 2022年3月7日星期一中國標(biāo)準(zhǔn)時(shí)間下午3:00:00 
 在此之后無效: 2023年4月6日星期四中國標(biāo)準(zhǔn)時(shí)間下午3:00:00
 公共密鑰信息:
 算法 RSA加密
 參數(shù):無
 公共密鑰: 256字節(jié):DB4EA74E8D5C7BBB...
 指數(shù)65537 密鑰大小 2,048位 密鑰使用 加密,驗(yàn)證针余,派生
 簽名256字節(jié):5073A02532426E18...
 ......

整個(gè)過程其實(shí)就是上文數(shù)字證書機(jī)制的頒發(fā)證書過程......

  1. 證書創(chuàng)建好了以后饲鄙,從鑰匙串導(dǎo)出證書格式為.p12文件(此文件建議備份保存)。

到此圆雁,iOS證書就創(chuàng)建完成了

  1. Xcode配置證書

安裝好最新版的Xcode>preference>Accounts>點(diǎn)擊+添加你的Apple開發(fā)者賬號(hào)>剩下的Xcode會(huì)自動(dòng)配置好

如果有多個(gè)開發(fā)者賬號(hào),最好手動(dòng)在工程里設(shè)置忍级。

  1. 代碼簽名(Code Signing)

(1) 每個(gè)證書(開發(fā)/發(fā)布)的公鑰都有對(duì)應(yīng)的私鑰,并且保存在鑰匙串(如果沒有你可能已經(jīng)遇到無法真機(jī)運(yùn)行的問題了)伪朽。

(2) 私鑰會(huì)在真機(jī)調(diào)試/打包的時(shí)候用來簽名,通常第一次運(yùn)行Xcode會(huì)彈窗提示訪問鑰匙串! 選擇“始終允許”轴咱,打包的時(shí)候還會(huì)把對(duì)應(yīng)的描述文件打包進(jìn)去,描述文件已經(jīng)包含證書相關(guān)信息了。

  1. iOS 系統(tǒng)驗(yàn)證簽名

(1) App在真機(jī)上運(yùn)行,首先會(huì)對(duì)app的相關(guān)信息和打包進(jìn)去的描述文件中包含的app信息對(duì)比烈涮。

(2) 緊接著iOS系統(tǒng)通過預(yù)裝在iOS系統(tǒng)的受信證書公鑰對(duì)描述文件中的相關(guān)證書解密朴肺,取得證書公鑰然后對(duì)app簽名信息驗(yàn)證,證明其是否被篡改跃脊。

(3) 驗(yàn)證通過就可以運(yùn)行了宇挫。

其過程就是上文數(shù)字證書機(jī)制中的B方驗(yàn)證A方證書的流程了

其它問題:

  1. 根證書CA

CA(Certificate Authority)被稱為證書授權(quán)中,根證書是CA認(rèn)證中心給自己頒發(fā)的證書酪术,是信任鏈的起始點(diǎn)器瘪。安裝根證書意味著對(duì)這個(gè)CA認(rèn)證中心的信任。

受信任證書存儲(chǔ)區(qū)包含預(yù)先安裝在 iOS绘雁、iPadOS橡疼、macOS、Apple tvOS 和 watchOS 中的受信任根證書庐舟。

  1. 授權(quán)文件:(Provisioning Profile) .mobileprovision文件

手動(dòng)在Apple開發(fā)者中心創(chuàng)建Provisioning Profile文件:

(1) Apple開發(fā)者中心>Certificates, Identifiers & Profiles>Profiles> 點(diǎn)擊+ 新建

(2) 依次選擇App ID(單選)> 證書(Certificates欣除,可多選)和設(shè)備(Devices,可多選)

開發(fā)配置文件包含開發(fā)所必須的所有內(nèi)容(app相關(guān)信息挪略,開發(fā)證書历帚,真機(jī)設(shè)備)
發(fā)布授權(quán)文件只包含發(fā)布證書滔岳、app相關(guān)信息

查看一個(gè)開發(fā)描述文件:

 xxxx_development
 Expires In 11 months
 
 App ID Name: xxxx
 App ID: xxxxxxxx.com.xxxx.xxxx
 Team: xxxxxx., Ltd. (xxxxxxxx)
 Platform: iOS
 UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
 Creation Date: Mar 12, 2022 at 12:03:24 PM GMT+8
 Expiration Date: Mar 12, 2023 at 12:03:24 PM GMT+8
 
 ENTITLEMENTS
 aps-environment: development
 get-task-allow: true
 com.apple.developer.applesignin: Default
 com.apple.developer.associated-domains: *
 application-identifier: xxxxxxxx.com.xxxx.xxxx
 com.apple.developer.team-identifier: xxxxxxxx
 keychain-access-groups: xxxxxxxx.*, com.apple.token
 
 CERTIFICATES
 Name: Apple Development: xx x (xxxxxxxx)
 Creation Date: Mar 12, 2021 at 12:46:08 AM GMT+8
 Serial Number: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 SHA-1: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 
 PROVISIONED DEVICES
 Device ID: xxxxxxxxxxxxxxxxxxxxxx
 ......
  1. p12文件:

P12文件是使用PKCS#12(公鑰密碼標(biāo)準(zhǔn)#12),全稱“Public Key Cryptography Standards #12加密的數(shù)字證書“挽牢,用于存儲(chǔ)和傳輸個(gè)人私鑰和其他敏感信息的可移植格式谱煤。

鑰匙串中帶有密鑰的證書都可以生成.p12文件,其它MAC電腦只要打開這個(gè).p12文件就無需再申請(qǐng)證書禽拔,可以直接用來開發(fā)相關(guān)應(yīng)用刘离。

對(duì)于開發(fā)證書,生成p12文件之后還要和描述文件(.mobileprovision)一起發(fā)送給其他使用者睹栖,才能使用這臺(tái)電腦就可以用來打包硫惕、真機(jī)調(diào)試等了。

  1. apple開發(fā)者賬號(hào)

    共三種:個(gè)人野来、公司恼除、企業(yè)。

Xcode 常見問題:

no such provisioning profile was found

描述文件錯(cuò)誤梁只,需要手動(dòng)去開發(fā)者中心下載描述文件到本地缚柳,或者點(diǎn)擊Fix issue解決。

No identities from profile

Xcode配置指定UDID的provisioning profile中的DeveloperCertificates在本地KeyChain中不存在[No identities are available]或不一致(KeyPair中的Private Key丟失)搪锣,此時(shí)需去網(wǎng)站檢查ProvisioningProfile中的App ID-Certificate-Device配置是否正確〔势或者試一試Xcode提示的Fix issue解決(可能自動(dòng)生成iOS Team ProvisioningProfile)构舟。

Code Signing Entitlements file do not match profile

檢查對(duì)應(yīng)版本(Debug)指定的*.entitlements文件中的“Keychain Access Groups”鍵值是否與ProvisioningProfile中的Entitlements項(xiàng)相吻合,或者將Build Settings|Code Signing的Provisioning Profile中對(duì)應(yīng)版本(Debug)的Entitlements置空堵幽。

Xcode 真機(jī)無線調(diào)試:

前提:

  • 必須能正常連線調(diào)試
  • 手機(jī)和電腦連接同一個(gè)局域網(wǎng)
  1. 連接設(shè)備,從Xcode中做如下操作:

    Window>Devices and Simulators>你的真機(jī) Connec via network??狗超。 然后斷開手機(jī),你會(huì)發(fā)現(xiàn)手機(jī)還是保持連接狀態(tài)朴下。

  2. command+R運(yùn)行后努咐,Xcode會(huì)提示iPhone is not connectioned,

    然后去Device and Simulators>左側(cè)選中設(shè)備,右健選擇Connect via IP Address 在彈出的框中輸入手機(jī)的IP地址殴胧,即可渗稍。

可能會(huì)遇到的問題:iPhone is busy xxx多試幾次。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末团滥,一起剝皮案震驚了整個(gè)濱河市竿屹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌灸姊,老刑警劉巖拱燃,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異力惯,居然都是意外死亡碗誉,警方通過查閱死者的電腦和手機(jī)召嘶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哮缺,“玉大人弄跌,你說我怎么就攤上這事『眩” “怎么了碟绑?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長茎匠。 經(jīng)常有香客問我格仲,道長,這世上最難降的妖魔是什么诵冒? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任凯肋,我火速辦了婚禮,結(jié)果婚禮上汽馋,老公的妹妹穿的比我還像新娘侮东。我一直安慰自己,他們只是感情好豹芯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布悄雅。 她就那樣靜靜地躺著,像睡著了一般铁蹈。 火紅的嫁衣襯著肌膚如雪宽闲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天握牧,我揣著相機(jī)與錄音容诬,去河邊找鬼。 笑死沿腰,一個(gè)胖子當(dāng)著我的面吹牛览徒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播颂龙,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼习蓬,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了厘托?” 一聲冷哼從身側(cè)響起友雳,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎铅匹,沒想到半個(gè)月后押赊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年流礁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涕俗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡神帅,死狀恐怖再姑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情找御,我是刑警寧澤元镀,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站霎桅,受9級(jí)特大地震影響栖疑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜滔驶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一遇革、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧揭糕,春花似錦萝快、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吏口,卻和暖如春氢拥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锨侯。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冬殃,地道東北人囚痴。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像审葬,于是被迫代替她去往敵國和親深滚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容