作者:kim
时间:Apr 26, 2015
版权:非商用,自由转载,请保留原文地址。
1. 访问 https://developer.apple.com/membercenter/ ,点击 “Certificates, Identifiers & Profiles” ,访问证书管理界面。
2. 首先选择 Certificates ,准备生成证书。
3. 去到 Certificates -> All 页面,我们看到介绍了2种生成证书的方法,第一种是用 Xcode 自动为你创建证书,第二种是通过网站由用户手动生成。我们选择第二种方法,这样更有利于我们理解整个过程。
4. 我们点击 “Certificate Signing Request” ,开始选择证书的类型,我们选择第一个 “iOS App Development”,即 iOS 应用开发证书。其它还有 APNs 独立证书、AppStore 上线证书、Apple Pay 证书等等。
5. 在这个页面所有证书类型的下面,我们还会见到中间证书(Intermediate Certificates)的提示,提供用户下载 “AppleWWDRCA.cer” 的链接。
实际上这个文件就是 Apple 的全球开发者根证书(Apple Root Certificate)。
对,就是公钥,意义等同 CA 的根证书!通常是 Xcode 自己安装好的,当然也可以自己下载,并手动安装到 Mac 上面。
6. 为了满足好奇心,我们手动安装下吧,点击 “Worldwide Developer Relations Certificate Authority” 就会下载到 “AppleWWDRCA.cer” 这个文件,双击就安装到了 Keychain 里面。
7. 选择好证书类型后,点击 continue 进入请求证书页面,这里提示你如何在 Mac 上生成 Certificate Signing Request(CSR)文件。CSR文件简单地说就是你的公钥/私钥对!
注意,CSR 文件尽量每个证书都制作一次,并且用不同名称区分开,这样增加安全性!
8. 选择 钥匙串访问 -> 证书助理 -> 从证书颁发机构请求证书 ,“证书颁发机构” 指的就是 Apple ,简单地说就是,你要把你的 CSR 文件(公钥)上传到 Apple ,让它用私钥给你加密签发证书!
9. “用户电子邮件”那里必须填写你的用户账号邮箱地址,“常用名称”那里随便填个喜欢的。选择把证书保存到磁盘,点击继续。
10. 到达密钥生成界面,一般保持默认选项就行了,即2048位的 RSA 算法生成公钥/私钥对!
11. 点击继续,生成 “CertificateSigningRequest.certSigningRequest” 文件。简单地说,这个文件就是你的“数字签名+公钥”,用来上传给 Apple ,然后 Apple 用其私钥加密,这样就成功签发合格的证书了!
这个过程相当于使用以下 openssl 命令生成公钥/私钥对。
$ openssl genrsa -out private.key 2048
$ openssl req -new -sha256 -key private.key -out CertificateSigningRequest.certSigningRequest
12. 这时我们可以在 Keychain 看到公钥/私钥对。
13. 回到浏览器的 “Add iOS Certificate” 界面,点击 continue 来到生成证书界面,点击 “Choose File” 把刚才保存下来的 “CertificateSigningRequest.certSigningRequest” 上传到苹果。
14. 点击 Generate ,证书就被 Apple 签发了。
15. 点击 Download 保存好开发者证书,我们可以看到,证书是以标准的 X.509 格式来生成的!
16. 双击证书,安装到 Keychain 里面。
17. 然后在 Keychain 里面查看下自己的证书吧。
18. 现在回到 “Certificates, Identifiers & Profiles” ,能看到你的证书记录显示在 Certificates 列表中!
19. 在实际中,开发证书 ios_development.cer 被苹果根证书 AppleWWDRCA.cer 解密,得出真实的公钥 public key 出来!
20. iOS 设备以及 Mac 系统,都使用 CA 证书(AppleWWDRCA.cer)来判断 Provisioning Profile 中的开发证书的合法性。
1)若用 AppleWWDRCA.cer 公钥能成功解密出证书,并得到用户真实公钥(Public Key)和内容摘要(Signature),则证明此证书确实是 AppleWWDRCA 所签发,即证书的可信性!
2)对证书本身使用哈希算法计算摘要(Signature),若与上一步得到的摘要一致,则证明此证书确实未被篡改过,及证书的完整性!