问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

iOS开发证书详解:从根证书到开发/发布证书

创作时间:
作者:
@小白创作中心

iOS开发证书详解:从根证书到开发/发布证书

引用
CSDN
1.
https://blog.csdn.net/kuangdacaikuang/article/details/52983920

iOS开发证书是确保应用程序来源可信和内容完整性的关键组件。本文将详细介绍iOS开发中涉及的各类证书,包括根证书、证书申请流程以及开发/发布证书的区别,帮助开发者更好地理解和使用这些证书。

iOS 开发 证书详解

1. 根证书:Apple Worldwide Developer Relations Certification Authority

iOS以及Mac OS X系统(在安装Xcode时)将自动安装AppleWWDRCA.cer这个中间证书(Intermediate Certificates),它实际上就是iOS(开发)证书的证书,即根证书(Apple Root Certificate)。

AppleWWDRCA(Apple Root CA)类似注册管理户籍的公安机关户政管理机构,AppleWWDRCA.cer之于iOS(开发)证书则好比户籍证之于身份证。

无论是开发证书还是生产证书,都必须从根证书上派生。根证书就是根mac产生的证书,menber center上保存的那个证书就是根证书,它只能安装在创建它的那台mac上,其他的开发mac必须从那台根mac上导出证书使用。也就是所有的子证书都只能从根证书派生而来。

2. 申请证书(CSR:Certificate Signing Request)

可以在缺少证书时通过Xcode Fix Issue自动请求证书,但是这会掩盖其中的具体流程细节。这里通过Keychain证书助理从证书颁发机构请求证书:填写开发账号邮件和常用名称,勾选【存储到磁盘】。

Keychain Access(钥匙串访问)/Keys(密钥)中将新增一对非对称密钥对Public/Private Key Pair(公钥和私钥)。同时,keychain(钥匙串)将生成一个包含开发者身份信息和公钥的CSR(Certificate Signing Request)文件——CertificateSigningRequest.certSigningRequest。

私钥private key始终保存在Mac OS的Keychain Access中,用于签名(CodeSign)本机对外发布的App;公钥public key一般随证书(随Provisioning Profile,随App)散布出去,对App签名进行校验认证。用户必须妥善保存本地Keychain中的private key,以防伪冒。

在Apple开发网站上传包含公钥的CSR文件作为换取证书的凭证(Upload CSR file to generate your certificate)

Apple证书颁发机构WWDRCA(Apple Worldwide Developer Relations Certification Authority)将使用其private key对CSR中的public key和一些身份信息进行加密签名生成数字证书(ios_development.cer)并记录在案(Apple Member Center)

从Apple Member Center网站下载证书到Mac上双击即可安装(当然也可在Xcode中添加开发账号自动同步证书和[生成]配置文件)。证书安装成功后,在KeychainAccess|Keys中展开创建CSR时生成的Key Pair中的私钥前面的箭头,可以查看到包含其对应公钥的证书(Your requested certificate will be the public half of the key pair.);在Keychain Access|Certificates中展开安装的证书(ios_development.cer)前面的箭头,可以看到其对应的私钥。

Certificate应被配置到【Xcode Target|Build Settings|Code Signing|Code Signing Identity】下,下拉选择Identities from Profile “…”(一般先配置Provisioning Profile)。以下是Xcode配置示例:

3. 开发/发布证书

iOS证书是用来证明iOS App内容(bundle with executable and resources)的合法性和完整性的数字证书。对于想安装到真机或发布到AppStore的应用程序(App),只有经过签名验证(Signature Validated)才能确保来源可信,并且保证App内容是完整、未经篡改的。

它的作用就是证明你的mac具有开发或发布某个开发者账号下应用的权限。而且证书还分成两种,一种是开发证书,也叫Development certificate; 另一种是发布证书或叫生产证书,英文名叫Production certificate。

  • development certificate:开发证书是证明你的mac具有开发和真机调试你的程序的东西。但是每个证书关联着一个开发者账号,也就是说,你只能使用这个证书开发这个账号底下的应用,它是通过bundle id来知道该应用是不是属于自己的账号。所以,每次为一个开发者帐号开发应用,就得需要这个账号创建的开发证书。
  • Production certificate:生产证书是证明你的mac是否具有发布应用的权限。在archive到appstore的时候,必须有生产证书,否则时上传不成功的。
  1. 众所周知,我们申请一个Certificate之前,需要先申请一个Certificate Signing Request (CSR) 文件,
  2. 这个过程中实际上是生成了一对公钥和私钥,保存在你Mac的Keychain中。代码签名正是使用这种基于非对称秘钥的加密方式,用私钥进行签名,用公钥进行验证。
  3. 在你Mac的keychain的login中存储着相关的公钥和私钥,而证书中包含了公钥。你只能用私钥来进行签名,所以如果没有了私钥,就意味着你不能进行签名了,所以就无法使用这个证书了,此时你只能revoke之前的证书再申请一个。
  4. 因此在申请完证书时,最好导出并保存好你的私钥。当你想与其他人或其他设备共享证书时,把私钥传给它就可以了。私钥保存在你的Mac中,而苹果生成的Certificate中包含了公钥。当你用自己的私钥对代码签名后,苹果就可以用证书中的公钥来进行验证,确保是你对代码进行了签名,而不是别人冒充你,同时也确保代码的完整性等。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号