超级签网上的讲解已经有很多很多了,但是都不够细致, 对于我这种没接触过苹果开发的人来说, 还是有点蛋疼。 这也是这篇博客的目的,希望帮助到更多人。
开头先说下超级签, 也不知道谁起的这么有创意的名字。 简单来说就是用过苹果的个人开发者帐号对用户设备进行针对性打包,然后提供用户下载。PS: 这过程是由系统自动完成。

这个是签名的流程图:

这个就涉及到几个问题
  1. 对 mobileconfig 文件进行签名, 提供给用户下载
  2. 需要获取用户的设备号 也就是 uuid
  3. 需要把获取到的用户的 uuid 添加到苹果的开发者后台里面。 这个就涉及到跟苹果的通信
  4. 从苹果的开发者后台下载 mobileprovision 文件。 这个也是需要跟苹果通信的。PS: 要把包名添加到开发者后台, 否者会签名失败
  5. 使用linux系统对ipa文件进行签名, 然后提供给用户下载

解决方案:

问题1:
为iOS的mobileconfig文件进行签名 这篇描述的比较详细, 但里面的方法好像不太能用了。反正我没测试通过, 这是一个坑之一。
解决方案是:阿里云免费SSL证书对IOS描述文件mobileconfig的签名认证 该方案可以正常使用。里面提及的证书, 阿里云已经更新过了。
正确的应该使用: 此处划重点

  1. apache证书的 xxx.net_public.crt 直接使用不需要按照文中转换
  2. nginx的 xxx.key 和 xxx.pem
    划重点:mobileconfig 必须是https,必须是301跳转,且nginx或其他web服务器 必须支持TSL1.2以上 坑之二…不想重新编译请使直接使用负载均衡完美解决这个问题
    openssl s_client -connect 域名:443 -tls1_2 该命令可测试你的域名能否支持tsl1.2

问题2:
通过Safari浏览器获取iOS设备UDID(设备唯一标识符) 的博客写的又详细又好, 我就不多此一举了


问题3和4:
在github上有开源工具 Spaceship,感谢开源贡献者, 感谢你们。。但顺便吐槽一下, ruby写的…文档看着头疼
Spaceship 文档
ruby api文档
ruby 初学者


问题5:
又是一枚开源工具 isign, 简单到一行代码搞定签名, 这个是python写的,必须2.+的环境, 不要用3.0以上的 我使用的是2.7的。对此我也想吐槽一句,网上介绍超级签必定介绍这个工具, 但为什么没有人说一下这个工具可以在linux上跑。。为此我一直傻傻的认为只能在mac上运行

isign -c 客户端证书.pem -k 私钥.pem -p 苹果授权文件.mobileprovision -o 目标.ipa 源.ipa

介绍到此结束。可以自己搭建一套企业签了, 当然还需要做一些兼容。下面是一些详细的搭建过程, 没有兴趣的可以略过。。。





环境安装

服务器系统版本 centos 7.2

wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.4.tar.gz
tar -zxvf ruby-2.6.4.tar.gz
cd ruby-2.6.4
./configure --prefix=/usr/local/ruby-2.6.4
make && make installln -s /usr/local/ruby-2.6.4/bin/ruby /usr/bin/ruby
ln -s /usr/local/ruby-2.6.4/bin/gem /usr/bin/gemgem install fastlane
gem install pry
gem install spaceship
gem install pry-coolline
gem install rails
gem install mysql2yum install zippython 2.7的环境, 不能是3.0的环境
# 不能使用这个安装, 这会安装老版本的 pyopenssl,
# 然后pip就失灵了, 如果试图修复pyopenssl,
# 更新成为最新版本,他又提示 not found module, 所以不要去做这种尝试了, 坑之三
# 不要使用  pip install isign#请使用
git clone https://github.com/apperian/isign
sh version.sh
python setup.py build
python setup.py install

在解决上面5个问题提之前。我们应该先部署一些东西
**我们要有一个苹果开发者帐号, 然后可以登录进去, 到创建一个ad_hoc的描述文件 并导出该证书的p12 文件, 并制作一个 mobileConfig 文件。至于如何制作, 请看 通过Safari浏览器获取iOS设备UDID(设备唯一标识符) **
问题1 签名mobileConfig:

 system "openssl smime -sign -in #{源mobileConfig} -out #{输出mobileConfig} -signer #{apache的net_public.crt} -inkey #{nginx的 xxx.key} -certfile #{nginx的 xxx.pem} -outform der -nodetach"

划重点: 我使用的 openssl 版本是1.0.2k,openssl 在1.0.1的时候开始支持TLS1.1,TLS1.2; 我并没有遇到协议不支持这方面的问题。。建议低于这个版本的同学,如果遇到一些问题可以尝试升级openssl

在强调一遍:下载mobileconfig 必须是https,必须是301跳转,且nginx或其他web服务器 必须支持TSL1.2以上

问题2:使用p12 导出 pem

 #登录帐号Spaceship::Portal.login(username, password)#导出 客户端.pemsystem "openssl pkcs12 -password pass: -in #{p12文件路径} -out #{客户端.pem路径} -clcerts -nokeys"#导出 私钥.pemsystem "openssl pkcs12  -password pass: -in #{p12文件路径} -out #{私钥.pem路径} -nocerts -nodes"

问题3和4:

 #登录帐号Spaceship::Portal.login(username, password)#添加 bundleIdapp = Spaceship::Portal.app.find(bundleId)if !appapp = Spaceship::Portal.app.create!(bundle_id: bundleId, name: bundleId)end#如果uuid不存在则添加uuidif !Spaceship::Portal.device.find_by_udid(uuid)Spaceship::Portal.device.create!(name:uuid, udid: uuid)end#创建 ad_hocprofile = Spaceship::Portal.provisioning_profile.ad_hoc.create!(bundle_id: bundleId, certificate: cert, name: username)#获取所有设备号devices = Spaceship.device.allSpaceship.provisioning_profile.ad_hoc.all.each do |p|# 根据cert 证书创建#更新 ad_hocp.devices = devicesp.update!endSpaceship.provisioning_profile.ad_hoc.all.each do |p|File.write(mobileprovision文件路径, p.download)end#目前测试这样写是不会出错的。如果两个循环放在一个里面。。苹果会报错, 坑之四
  1. 签名 ipa文件
# 注意: 描述文件 和 p12的keyPem,mobileProvision
# 一定是要对应的,否则就算签好了, 也无法运行api 坑之五system "/usr/bin/isign   -c #{描述文件} -k #{p12的keyPem} -p #{p12的mobileProvision} -o #{输出api} #{源api}"
特别指出很多,签名过后不能使用的情况。 原因是第一步 创建证书的时候记错了。。手动创建证书的时候 需要上传p12文件,而脚本上所要求的p12文件必须是同一个!!!!
为了更好的理解打包过程和搭建自己的超级签平台, 提供一个流程图给大家参考


以上就是搭建超级签的核心代码。。
这里有一套现成的解决方案提供参考:git@github.com:liaoque/ipasign.git
如果有问题可以加QQ: 844596330

搭建 超级签 详细攻略相关推荐

  1. Liunx实现超级签名详细攻略(一)超级签名简介

    本文将从零开始详细讲解在Liunx中完全自动化实现超级签名流程. iOS超级签名: 主要目的: 把开发的APP不通过App Store安装到用户手机中. 优点: 不用上架App Store,稳定不掉签 ...

  2. Python IDE之Pydev: 基于Eclipse搭建python的编译环境(Eclipse+pydev)简介、安装、使用的详细攻略

    Python IDE之Pydev: 基于Eclipse搭建python的编译环境(Eclipse+pydev)简介.安装.使用的详细攻略 目录 pydev简介 PyDev 安装和配置 1.安装MyEc ...

  3. 想搭建一个专属于你的网站吗??新手向超详细攻略

    想搭建一个专属于你的网站吗??新手向超详细攻略 搭建攻略 了解网站基本构成 购买域名 域名备案 购买服务器 配置域名解析 配置服务器 了解必要组件 进入webshell安装 进行环境配置 安装CMS系 ...

  4. IT:前端进阶技术路线图(初级→中级→高级)之初级(研发工具/HTML/CSS/JS/浏览器)/中级(研发链路/工程化/库/框架/性能优化/工作原理)/高级(搭建/中后台/体验管理等)之详细攻略

    IT:前端进阶技术路线图(初级→中级→高级)之初级(研发工具/HTML/CSS/JS/浏览器)/中级(研发链路/工程化/库/框架/性能优化/工作原理)/高级(搭建/Node/IDE/中后台/体验管理/ ...

  5. NLP:Transformer的简介(优缺点)、架构详解之详细攻略

    NLP:Transformer的简介(优缺点).架构详解之详细攻略 目录 Transformer的简介(优缺点).架构详解之详细攻略 1.Transformer的简介 (1).Transforme的四 ...

  6. AI之NLP:自然语言处理技术简介(是什么/学什么/怎么用)、常用算法、经典案例之详细攻略(建议收藏)

    AI之NLP:自然语言处理技术简介(是什么/学什么/怎么用).常用算法.经典案例之详细攻略(建议收藏) 目录 NLP是什么? 1.NLP前置技术解析 2.python中NLP技术相关库 3.NLP案例 ...

  7. BigData:大数据开发的简介、核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS、HBase、Hive}+Docker)、经典场景应用之详细攻略

    BigData:大数据开发的简介.核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS.HBase.Hive}+Docker).经典场景应用之详细攻略 BigData:大数 ...

  8. BigData之Hbase:Hbase数据管理的简介、下载、案例应用之详细攻略

    BigData之Hbase:Hbase数据管理的简介.下载.案例应用之详细攻略 目录 Hbase数据管理的简介--基于Hadoop的非结构化.基于列的数据存储的数据库 1.HBase的架构体现及与HD ...

  9. Py之paddlehub:paddlehub的简介、安装、使用方法之详细攻略

    Py之paddlehub:paddlehub的简介.安装.使用方法之详细攻略 目录 paddlehub的简介 paddlehub的安装 paddlehub的使用方法 1.使用PaddleHub下载数据 ...

最新文章

  1. 2天训练出15亿参数大模型,国产开源项目力克英伟达Megatron-LM,来自LAMB作者团队...
  2. python定时任务:apscheduler的使用(还有一个celery~)
  3. Maven提高篇系列之(三)——使用自己的Repository(Nexus)
  4. 字节跳动VQScore算法拿下ICME 2021“压缩UGC视频质量评估”比赛第一名
  5. intellij2018使用2019的主题
  6. Inter Thread Latency
  7. 【PyTorch】torch.clamp()==>将input的值限制在[min, max]之间,并返回结果到一个新张量
  8. ShartPoin无法创建门户网站的问题
  9. java简单入门教程_史上最快速最简单的java入门教程
  10. c语言变量ppt,C语言数据类型和变量课件PPT
  11. JS根据身份证计算年龄
  12. 制定科学学习计划的重要性
  13. Git之(三)辅助命令
  14. 天玑9200和骁龙8+哪个好 天玑9200和骁龙8+gen1对比
  15. 【视频教程】Win10系统需要关闭的功能,常规隐私 win10电脑怎么关闭隐私选项
  16. Java:String转char数组
  17. 2018沈阳网络赛J
  18. python 电子词典的实现
  19. python合并ts视频(三种方法)
  20. 用计算机怎么更改进位制,计算机中的进位制,8421法是怎么转换的啊,求解

热门文章

  1. 引用echerts图表
  2. PHP真的没落了吗??
  3. 5G工业智能网关的优势
  4. SR860 DSP 锁相放大器技术参数
  5. matlab污水识别,污水处理工艺的MATLAB动态系统模型仿真研究
  6. C# 保存Excel数据及文件
  7. BFS——小妈妈找蝌蚪
  8. Ideal必备宝藏插件
  9. 西门子S7-300PLC,我们可以使用模块FB41 来实现PID 控制
  10. 【Docker系列】Docker Compose 服务依赖和健康检查