iOS开发证书相关总结

191 阅读3分钟

加密、解密

对称加密、非对称加密

  • 对称加密:加密、解密使用相同的密钥;DES、AES(Mac、Windows的磁盘加密使用的就是AES)
  • 非对称加密:加密、解密使用不同的密钥。RSA

非对称加密原理

  • 数学原理:一个很大的数很难被因式分解
  • 非对称加密成对出现公钥、私钥
  • 公钥加密一段信息,私钥可以解密
  • 私钥加密一段信息,公钥可以认证

应用

公钥私钥的两条特性就产生了两种应用

  • 加密、解密;
  • 数字签名;

最常用的应用场景:

  1. 网银:U盾简化理解成公钥
  2. SSH、Gitlab;本机存储私钥,远程主机、Gitlab存储公钥
  3. 苹果服务器的数据无法被破解,因为私钥存在于手机中
  4. Telegram的端对端加密

存在的隐患:

A<----->C A<----->B<----->C
  1. A公钥加密, C私钥解密
  2. B监听干涉,A误认B是C,C误认B是A. A用B给的公钥加密,B用私钥解密出message,B再用C给的公钥加密message,C用私钥解密. A和C都不会知道B的存在

第三方认证机构数字签名

  1. 我们信任一些第三方认证机构(CNNIC除外)
  2. 数字签名的流程
  3. CNNIC可以给一个假冒网站颁发证书,系统/浏览器信任了CNNIC,就完全无法识别假冒网站
  4. 信任链,系统、浏览器有一些信任的根证书
  5. 苹果已经移除对WoSign证书的信任 iOS中可用的受信任根证书的列表

HTTPS

证书相关

证书

  • iOS、Mac、AppleWatch、Apple TV开发、APNs、Apple Pay等
  • 每类证书都有对应的develop、distribution

证书:证书是数字认证机构认证过的公钥

P12:P12包含私钥

Entitlements

Capabilities:iCloud、Push、Apple Pay、VPN、Maps、Background Mode、Data Protection

provision profile

profile包含 个Bundle Id、多个证书、多个Device Id、一个Entitlements

Code Sign

  • 私钥加密代码,苹果共公钥认证
  • Archive没有CodeSign,ExportIPA才会CodeSign
  • 每次提交AppStore 要求与上次的私钥 致,只要公钥能认证通过就行

CertSignRequest

向Apple请求认证,同时在本机创建私钥,把公钥给Apple,Apple给这个公钥认证;

证书管理的机制

  • 每个账号最多只能有3个distribution证书,25个develop证书
  • 公司、企业账号可以创建 账户,分Admin、Develop等,分别有 同的权限
  • Xcode8的自动管理证书机制要求登录一个开发者账号,可以操作对应的develop证书和profile
  • Jenkins企业版打包就是切换到手动管理证书,替换Bundle Id、Team Id、Profile

常见问题

build version已存在

项目中会把 git commit 次数作为 build version, archive的时候根据 build version可以定位到对应的commit;

Your Account already has a valid iOS Distribution certificate

  1. profile失效
  2. 证书失效