当前位置: 网站首页  >> ios/苹果动态  >> ios企业签名  >> 查看详情

IOS签名机制与配置文件

时间:2019-12-21 15:43:52 作者: ios企业签名

  IOS签名机制与配置文件,iOS签名机制的作用:保证安装到手机上的app都是经过Apple官方验证和许可的。不管真机调试,还是发布App,开发者都必须经过一些列复杂的步骤,下面广州浅蓝谷科技将详细的说明这些。
  
  第一步 上传本地开发者的公钥信息到MC,具体操作就是从mac上钥匙串中生成一个CertificateSigningRequest.certSigningRequest文件,该文件中主要包含以下信息:申请者信息,此信息是用申请者的私钥加密的,申请者公钥,此信息是申请者使用的私钥对应的公钥,摘要算法和公钥加密算法可以采用openssl来解析文件中内容:openssl asn1parse -i -in ,为什么要上传这个信息呢?因为后续我们在用xcode构建项目时,需要对可执行文件进行签名(即采用本地摘要算法先进行hash计算,然后在使用本地私钥进行加密),如果MC拿不到我们的公钥,那么如何进行非对称解密,如何验证我们app是否完整呢!
  
  拿到CRS文件后上传到MC。
  
  第二步 从MC下载apple颁发的Cer证书,上一步上传完CSR文件后,可以根据我们的需求配置证书相关的信息,例如bundleID,Push、Apple Pay等等,然后我们将MC生成的证书下载并安装到本地钥匙串中,其实MC在拿到我们上传CSR文件后,提取里面的公钥,它需要做的便是将MC中关于我的账号信息和刚刚提交的公钥打包,再进行数字签名,最后封装到cer证书中。我们可以用openssl来看一下cer文件内容:openssl x509 -inform der -in ios_development.cer -noout –text,也可以直接在mac上按住空格预览。
  
  其中主要包含摘要算法和RSA加密公钥,以及一个apple的签名。双击安装证书后,KeyChain子自动将这公钥和本地私钥关联起来。后续程序在真机上build时,会使用本地私钥进行代码签名,而公钥会附带人mobileprovision文件中去,打包进app。
  
  note: 实际上公钥是放在了mobileprovision文件中,并不是随代码一同打包的,所以我认为我们mac上安装的证书没有实际用处,因为mobileprovision是MC为我们生成的。其实安装证书的主要目的应该是区别对应的私钥,真正用于签名的是私钥,如果本地有多个不同的证书,那就有多个私钥,所以需要依靠不同证书来区分到底用哪种私钥进行codesign。mobileprovision我会在后面讲解。所以,有证书却没有私钥还是没用的。
  
  既然私钥是某台电脑上生成的,那么团队如何开发呢?其实我们可以从钥匙串中给安装好的证书导出.p12文件,在其他机器上安装即可共享私钥和证书了。我们下载下来的证书也是有很多种类的,就好像你需要驾驶证才能开机动车,你需要护照才能出国,用途不同,证书也不同。如下是展示部分证书类型:iOS App Development。开发、真机调试用;Apple Push Notification service SSL (Sandbox)。开发阶段使用苹果的推送服务;App Store and Ad Hoc。上架和AdHoc方式发布时用;Apple Push Notification service SSL (Production)。上架后使用苹果推送服务;5.0 In-House。
  

炒币软件——长沙云端信息科技


  第三步 配置iOS mobileprovision文件,证书只保证了app的所属和完整性,却不能保证app的某些功能和服务是被苹果认可的,例如APNs和apple pay等等。所以,苹果想出了坑爹作死的mobileprovision。可以用如下命令查看描述文件的内容:security cms -D -i embedded.mobileprovision。
  
  可安装的设备列表。对于AdHoc方式发布的app或者真机调试时,会有一个列表,这个列表里面是iOS设备的UDID,每台iOS设备出厂的UDID都不同。苹果的签名。这里的签名是apple的私钥签名的,不是我们本地的私钥,我们除了从MC中下载,没有其他方法,如果我们篡改了相关信息,则文件失效。因此app的各种权利完全被apple牢牢掌控着。
  
  如果采用Adhoc发布呢?Adhoc允许将beta版发布给最多100台设备安装,apple便是通过这里描述文件的第四条来牢牢掌控,只需要描述文件中有相关设备的UDID便可以,而这些UDID需要事先添加到MC的Devices中去。以上便是iOS签名机制和描述文件的详细讲解,下面会继续嗨聊iOS作死的代码签名。
  
  iOS上build的处理流程,我们平时用VS或者clion编一些C/C++时,几乎都是走code-build-link-run流程,无需其他什么认证,但是由于apple的严格生态规则,必须要验证开发者身份和权限。IPA签名找我们广州浅蓝谷科技。
  
  


回到顶部