iOS证书及ipa包重签名探究
2016-01-21 13:57
295 查看
iOS证书学习推荐博客代码签名探析,本文重点在于介绍ios8.1.3系统ipa包重签名(如企业证书)无法安装的问题。苹果在iOS8.1.3系统以后加强了对ipa安装包签名的验证,主要区别在于ipa唯一标识在原有Bundle
Identifier的基础上增加了证书ID,也就说安装包和手机上已安装APP的Bundle Identifier即使一致,如果两者签名的证书ID不相同,那么安装包也无法正常安装。证书ID是什么?
图中方框里字符串就是证书ID,升级后的ipa标识就是证书ID+BundleID,只有两者完全匹配,安装包才能覆盖安装,否则就会提示安装失败。解决办法就是卸载安装包,重新安装!
目前,重签名主要用于企业证书重签名个人证书发布的ipa包,包括各种助手及企业内测包的发布等。在重签名前,让我们先看看一个完整的ipa包有哪些与证书相关的东西!打开ipa包,会发现_CodeSignature和embedded.mobileprovision两个文件
_CodeSignature,ipa包签名文件
embedded.mobileprovision,证书配置文件
因此,替换上面两个文件就解决了ipa重签名的主要问题。此外,代码签名探析文中还提到entitlements.plist授权文件,重签名时也需要处理。按照下图内容创建plist文件,输入相关信息。
2、替换证书配置文件(文件名必须为embedded,不得自定义)
3、重签名(certifierName为重签名证书文件名,可以加证书ID后缀)
4、打包
很多朋友在重签名时会忽略第二步或者没有指定entitlements.plist,都会造成ipa包安装失败。如果有其它关于签名的问题,可以在文章下面跟我留言!
Identifier的基础上增加了证书ID,也就说安装包和手机上已安装APP的Bundle Identifier即使一致,如果两者签名的证书ID不相同,那么安装包也无法正常安装。证书ID是什么?
图中方框里字符串就是证书ID,升级后的ipa标识就是证书ID+BundleID,只有两者完全匹配,安装包才能覆盖安装,否则就会提示安装失败。解决办法就是卸载安装包,重新安装!
1 | The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile |
_CodeSignature,ipa包签名文件
embedded.mobileprovision,证书配置文件
因此,替换上面两个文件就解决了ipa重签名的主要问题。此外,代码签名探析文中还提到entitlements.plist授权文件,重签名时也需要处理。按照下图内容创建plist文件,输入相关信息。
整个签名过程如下(文件路径自定义)
1、解压ipa安装包1 | cp olinone.ipa olinone.zip |
1 | cp embedded.mobileprovision Payload/olinone.app |
1 2 | certifierName="iPhone Distribution: olinone Information Technology Limited(6a5TVN58SY)" codesign -f -s $certifierName --entitlements entitlements.plist Payload/olinone.app |
1 | zip -r olinone.ipa Payload |
相关文章推荐
- iOS开发之AsyncSocket使用教程
- iOS 开发里使用MVC编程模式项目
- ios开发 导入.a后导致出现静态库代码冲突
- ios 使用FFMPEG
- ios编程--AVCapture编程理解(视频输入输出--摄像头)
- ios remote control
- iOS开发常用技巧
- IOS-问题汇总
- IDFA - 3
- iOS多线程的初步研究(九)-- dispatch源
- 超全!整理常用的iOS第三方资源
- iOS单例初步理解
- iOS黑魔法-Method Swizzling
- iOS文件分段下载
- iOS Label文字分段颜色
- iOS自动打包并发布脚本
- 复习iOS沙盒目录结构解析
- iOS使用ionic实现混合式开发
- 160121iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)
- iOS文件管理,文件夹目录调取+缓存读取计算清除