在 iOS 開發(fā)中需要用到多種證書,在以前雖然經(jīng)常用到,但沒有關(guān)注這些證書是什么和為什么要使用這些證書,導(dǎo)致在遇到問題時總是要去查資料,不能夠很快的解決問題,所以想把這些知識整理一下,記錄下來。
簡單來說,進(jìn)行 iOS 開需要的兩種類型的證書:Certificates 和 Provisioning,而根據(jù)不同的使用環(huán)境,這兩種證書又有 Development 和 Distribution 兩種版本。顧名思義 Development 版本用在開發(fā)環(huán)境下的,而 Distribution 版本則是用在發(fā)布環(huán)境下。下面再來說一說 Certificates 和 Provisioning 到底是什么。
Certificates
為了確保應(yīng)用來源的可靠性,Apple 使用了公私鑰加密的方式。在向 Apple 申請 Certificate 時開發(fā)者首先鑰需要在本地生成一對公私鑰,這就是 Certificate Signing Request (CSR) 文件,私鑰用來對應(yīng)用進(jìn)行簽名,而公鑰則用來對應(yīng)用進(jìn)行驗證。把 CSR 文件上傳之后,生成的 Certificate 文件就包含了相應(yīng)的公鑰,這個證書可以用來驗證應(yīng)用是不是擁有還證書私鑰的開發(fā)者簽名的,從而確保了安全性。
Provisioning
程序進(jìn)行打包發(fā)布的時候,Provisioning 文件會打包到應(yīng)用文件中,在 Provisioning 中包括了應(yīng)用 ID,驗證應(yīng)用可靠性的 Certificate 也就是公鑰,以及該應(yīng)用可在哪些設(shè)備上運行的信息。
總結(jié)
這么就可以看出,Certificates 主要使用來驗證開發(fā)者的,而 Provisioning 包含了 Certificate 的信息和應(yīng)用 ID 所以它就可以驗證該應(yīng)用包是不是由正確的開發(fā)者開發(fā)的,以及應(yīng)用包是不是對應(yīng)用ID的包。