iOS证书详解

iOS证书详解
引⾔
关于开发证书配置(Certificates & Identifiers &
Provisioning
Profiles),相信做iOS开发的同学没少被折腾。对于⼀个iOS开发⼩⽩、半吊⼦(⽐如像我⾃⼰)抑或⽼兵,或多或少会有或曾有过以下不详、疑问、疑惑甚⾄困惑:
什么是App ID?Explicit/Wildcard App ID有何区别?什么是App Group ID?
什么是证书(Certificate)?如何申请?有啥⽤?
男子喝水银被救治什么是Key Pair(公钥/私钥)?有啥⽤?与证书有何关联?
什么是签名(Signature)?如何签名(CodeSign)?怎样校验(Verify)?
什么是(Team)Provisioning Profiles?有啥⽤?
Xcode如何配置才能使⽤iOS真机进⾏开发调试?
多台机器如何共享开发者账号或证书?
遇到证书配置问题怎么办?
本⽂将围绕相关概念做个系统的梳理串烧。
写在前⾯
1.假设你使⽤过Apple设备(iMac/iPad/iPhone)且注册
注册过Apple ID(Apple Account)。
只有拥有开发者账号,才可以申请开发/发布证书及相关配置授权⽂件,进⽽在iOS真机上开发调试Apps或发布到App Store。
开发者账号分为Individual和Company/Organization两种类型。如⽆特别交代,下⽂基于$99/Year的普通个⼈开发者(Individual)账号展开。
3.若要真机调试实践,你必须⾄少拥有⼀台装有Mac OS X/Xcode的Mac开发机(iMac or MacBook),其上⾃带原⽣的Keychain Access。
bundle identifier)
.App ID(bundle identifier)
⼀.App ID(
App ID即Product ID,⽤于标识⼀个或者⼀组App。
App ID应该和Xcode中的Bundle Identifier是⼀致(Explicit)的或匹配(Wildcard)的。
反域名(reverse-domain-name)格式的Company Identifier(Company ID)作为前缀(Prefix/Seed),⼀般不超App ID字符串通常以反域名
过255个ASCII字符。
改革开放四十周年论文App ID全名会被追加Application Identifier Prefix(⼀般为TeamID.),分为两类:
Explicit App ID:唯⼀的App ID,⽤于唯⼀标识⼀个应⽤程序。例如“com.apple.garageband”这个App ID,⽤于标识Bundle Identifier
为“com.apple.garageband”的App。
Wildcard App ID:含有通配符的App ID,⽤于标识⼀组应⽤程序。例如“*”(实际上是Application
Identifier Prefix)表⽰所有应⽤程序;⽽“com.apple.*”可以表⽰Bundle
Identifier以“com.apple.”开头(苹果公司)的所有应⽤程序。
⽤户可在Developer MemberCenter⽹站上注册(Register)或删除(Delete)已注册的App IDs。
App ID被配置到
被配置到【XcodeTarget|Info|Bundle Identifier】下;对于Wildcard App ID,只要bundle identifier包含其作为Prefix/Seed即可。
.设备(Device)
Device)
⼆.设备(
UDID来唯⼀标识。
Device就是运⾏iOS系统⽤于开发调试App的设备。每台Apple设备使⽤UDID
iOS设备连接Mac后,可通过iTunes->Summary或者Xcode->Window->Devices获取iPhone的UDID(identifier)。
Devices中包含了注册过的所有可⽤于开发和测试的设备,普通个⼈开发账号每年累计最多只能注Apple Member Center⽹站个⼈账号下的Devices
100个设备。
册100
Apps signed by you or your team run only on designated development devices.
Apps run only on the test devices you specify.
⽤户可在⽹站上注册或启⽤/禁⽤(Enable/Disable)已注册的Device。
连接到Xcode被授权⽤于开发测试的iOS设备(iPhone/iPad)。
本⽂的Devices是指连接到
Certificates)
.开发证书(Certificates)
三.开发证书(
1.证书的概念
证书是由公证处或认证机关开具的证明资格或权⼒的证件,它是表明(或帮助断定)事理的⼀个凭证。证件或凭证的尾部通常会烙印公章。
证书
每个中国⼈⼀⽣可能需要70多个证件,含15种⾝份证明。证件中“必需的”有30到40个。将这些证件按时间顺序铺开,那就是⼀个天朝⼦民的
死亡证明注销。
⼀⽣——持准⽣证
准⽣证许可落地,以户籍证明⼊籍,以⾝份证认证⾝份,持结婚证以合法同居,最终以死亡证
2.数字证书的概念
数字证书就是互联⽹通讯中标志
实体⾝份的⽅式,其作⽤类似于司机的驾驶执标志通讯各⽅⾝份信息的⼀串数字,提供了⼀种在Internet上验证通信实体⾝份
CA机构,⼜称为证书授权中⼼(Certificate Authority)发⾏的,⼈们可以在⽹上⽤它照或⽇常⽣活中的⾝份证。它是由⼀个由权威机构——CA机构
来识别对⽅的⾝份。
数字证书是⼀个经证书授权中⼼数字签名的包含公开密钥拥有者信息以及公开密钥的⽂件。最简单的证书包含⼀个公开密钥、名称以及证书授权中⼼的数字签名。
葵花籽饼数字证书还有⼀个重要的特征就是时效性:只在特定的时间段内有效。
数字证书中的公开密钥(公钥)相当于公章。
起始点。安装根证书意味着对这个CA认证中⼼的信任。
某⼀认证领域内的根证书是CA认证中⼼给⾃⼰颁发的证书,是信任链的起始点
在天朝⼦民的⼀⽣中,户籍证明可理解为等效的根证书:有了户籍证明,才能办理⾝份证;有了上流的⾝份证,才能办理下游居住证、结婚证、计划⽣育证、驾驶执照等认证。
3.iOS(开发)证书
数字证书。对于想安装到真机或发布到AppStore的应⽤程序
iOS证书是⽤来证明iOS App内容(executable code)的合法性和完整性的数字证书
签名验证(Signature Validated)才能确保来源可信,并且保证App内容是完整、未经篡改的。
(App),只有经过签名验证
iOS证书分为两类:Development和Production(Distribution)。
gapdh
Development证书⽤来开发和调试应⽤程序:A development certificate identifies you, as a team member, in a development provisioning profile that allows apps signed by you to launch on devices.
Production主要⽤来分发应⽤程序(根据证书种类有不同作⽤):A distribution certificate identifies your team or organization in a distribution provisioning profile and allows you to submit your app to the store. Only a team agent or an admin can create a distribution certificate.
普通个⼈开发账号最多可注册iOS Development/Distribution证书各2个,⽤户可在⽹站上删除(Revoke)已注册的Certificate。
下⽂主要针对iOS App开发调试过程中的开发证书(Certificate for Development)。
4.iOS(开发)证书的根证书
那么,iOS开发证书是谁颁发的呢?或者说我们是从哪个CA申请到⽤于Xcode开发调试App的证书呢?
AppleWWDRCA(Apple Root CA)类似注册管理户籍的公安机关户政管理机构,之于iOS(开发)证书则好⽐户籍证之于⾝份证。
如果Mac Keychain Access证书助理在申请证书时尚未安装过该证书,请先下载安装(Signing requires that
you have both the signing identity and the intermediate certificate
installed in your keychain)。
5.5.申请证书(CSR:Certificate Signing Request)宣毒发表汤
证书助理从证书颁发机构请求证书:填写开发账号邮件和常⽤名称,可以在缺少证书时通过Xcode Fix Issue⾃动请求证书,这⾥通过Keychain证书助理
勾选【存储到磁盘】。
CSR(Certificate Signing Request)⽂件;同时,Keychain Access|Keys中将新增⼀对keychain将⽣成⼀个包含开发者⾝份信息的CSR
Key Pair(Thissigning identity consists of a public-private key pair that Apple issues)。
Public/PrivateKey Pair
private key始终保存在Mac OS的Keychain Access中,⽤于签名(CodeSign)对外发布的App;public key⼀般随证书(随Provisioning Profile,随App)散布出去,对App签名进⾏校验认证。⽤户必须保护好本地Keychain中的private key,以防伪冒。
Keep a secure backup of your public-private key pair. If the private key is lost, you’ll have to create an entirely new identity
to sign code.
Worse, if someone else has your private key, that person may be able to impersonate you.在Apple开发⽹站上传该CSR⽂件来添加证书(Upload CSR file to generate your certificate):琦君

本文发布于:2024-09-21 14:30:29,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/432746.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:证书   开发   证明   账号   证件   认证   户籍
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议