Apple DEV - 证书

返回目录

申请证书签名 [Certificate Signing Request, CSR]

  1. 通过Keychain Access来从证书颁发机构请求证书:
    csr
  2. 输入证书信息:
    Common Name是这个证书的可见标识,所以请输入一个有意义的名字。
    csr
  3. 保存制作好的签名公钥*.certSigningRequest

申请签发证书 Certificate

有了数字签名后,就可以到Apple Developer Provisioning Portal 里,向CA申请签发证书了。

这里的证书分两大类:开发者证书、发布者证书(一般指公司)。前者开发时使用,后者发布使用。

申请流程如下:
csr

  • ####Development 开发环境所用到的证书
    • #####iOS App Development
      指的是为当前开发者签发开发者证书
    • #####App Push Notification service SSL(Sandbox)
      开发环境所用到的Push证书。Push相当复杂,后面专讲。
  • ####Production 生产环境所用到的数字证书,为了版面,截了一部分。
    • #####App Store and Ad Hoc
      公司账号将会签发一个公司名字的数字证书
    • #####Apple Push Notification service SSL(Production)
      会生成指定App ID的线上推送证书

创建任何类型证书都需要提供证书签名[CSR]的。

csr

如果创建Push类的证书,是需要和App ID进行绑定的。

csr

最终会根据所选择的类型,创建出新的证书,有效期为一年。

csr

Revoke 可以删除该证书,也可以Download证书(*.cer)到本地,执行后便自动添加到Mac里的Certificates中,或者通过XCode的管理工具自动获取。

实践QA

Q:关于签名证书:

*.certSigningRequest文件是一个数字签名的公钥,这个签名是由本地直接生成,不需要网络请求远程CA机构。

生成的私钥会存储在电脑本机(可以在Keychain Access中看到),公钥则是用来发送给对方,内容在本地由私钥加密,对方拿到内容后,用公钥解密。

Certificate中,我们会用该CSR证书签名公钥来创建数字证书数字证书是为了辨别发送方的真伪,CA机构会用自己的私钥对我们的公钥外加一些信息进行加密,生成*.cer证书。更多参见:阮一峰 - 数字签名是什么?

Q:团队开发中,*.certSigningRequest应该是每个成员自己申请还是共享。

A:之前都是用同一共享的,不过看来,正规的作法应该是,每个人创建自己的CRS,在公司的Member Center中创建开发者的*.cer文件。

因为开发环境的Provisioning Profile只跟App ID相关,与Cert无关,所以对于开发人员,这样都可以工作。

Production的证书则需要一个单独的*.certSigningRequest文件,而且该文件的私钥是保密的,只能在发布到AppleStore的负责人电脑中。

Q:如何共享私钥,让团队中其它人可以发布

正规的作法,不会把发布的*.certSigningRequest私钥放在一台电脑上,不然,这个人请假,或者电脑挂了,就会产生问题。

如何备分、分发私钥呢?

如果从Apple Developer Provisioning Portal 的Certificates中下载了某一个*.cer证书,导入成功,但本机却没有私钥,XCode会给出no private keys available的错误。

在申请证书签名时,密钥直接就存在了该设备中,打开Keychain Access,在Key(密钥)里可以看到两条test_certificate的记录,分别是public keyprivate key,证书和私钥是匹配.

csr

也可以指定某个iOS Distribution的Cert中直接导出:(如果电脑上没有这个证书的私钥,这里是无法展开看到key的。)

csr

在私钥上右键->导出,保存为 Personal Infomation Exchange (.p12)

设置密码并输入本机用户密码后得到一个*.p12文件,其它电脑导入该文件即可得到私钥。

关于p12

p12文件包含了证书的私钥信息,可以任意将证书迁移到其他电脑系统。

Q:关于CA?

CA机构并只有一家,Apple的证书应该都是它自家签发的。HTTPS常用的CA?

REF::

Maintaining Your Signing Identities and Certificates