一、签名说明:
-
ipa 能安装的前提是ipa已经经过了苹果认可的签名进行签名。
-
苹果商店下载的包所有人都能安装,切只能从苹果商店下载安装
-
企业签名的包,安装后需要信任企业证书才能安装,限制安装设备10万台
-
个人签名即由开发者打包的包,只能安装在添加了测试设备的设备上,一个账号打的包限制安装100台设备
二、超级签原理:
超级签主要利用个人签名来进行操作。即通过获取到用户的udid设备码,
利用苹果提供的api将获取到的udid添加到苹果后台去,然后利用苹果api生成证书和bundleid和描述文件,
用生成的证书和描述文件对ipa进行签名后,生成ipa下载链接,玩家即可通过此链接安装。
三、超级签优点:
-
稳定,掉签率低
-
有效期由开发者账号到期时间,和实际创建证书和描述文件的时间决定,一般认为是1年有效期
-
一个用户设备udid获取到后,存入浏览器cookie,下次再从平台安装其他应用即可直接进行签名安装,不必重新要用户输入密码获取udid
四、超级签缺点:
-
一个账号只能添加100台设备,要想多设备安装,就需要很多苹果开发者账号
-
用户初次安装时需要获取udid,获取过程通过网页方式获取,需要信任描述文件,输入密码,过程相对麻烦,部分初级玩家不会操作
-
一个账号被封时,用这个账号打包的包都会掉签,用户会打不开已掉签的应用
-
安装时间相对比企业签稍长,中间多了向苹果请求签名,打包等操作
-
超级签相当于给每个用户生成一个可安装的新包,会一个应用,多个包,占用大量磁盘和带宽
五、具体打包流程:
-
从苹果开发者网站获取请求密钥:
登录苹果开发者网站,按图操作获取到必要的信息
2、获得这三个参数后,生成 jwt 请求token,具体如何生成可百度,各个语言都可以生成。
3、通过苹果api 请求苹果账号信息
4、通过苹果api 生成一个证书保存证书id等信息到数据库
5、通过苹果api 可以生成一个通配符的bundleid,保存bundleid信息到数据库
6、在获取玩家udid时,通过苹果api将设备udid信息添加到苹果后台
7、根据4、5、6步骤获取到信息,请求苹果api生成描述文件
8、通过4、7步骤获得的证书文件和描述文件,调用签名脚本对ipa签名
9、将签名好的ipa放到下载目录,为玩家生成下载链接
10、此过程中,需要客户端js和服务器保持通信,当签名状态改变时,提示用户或作出对应的响应
六、签名脚本安装:
具体见github
zsign -k /work/test_sign/ios_development.p12 -p 147258 -m /work/test_sign/profile.mobileconfig -o output.ipa -z 9 /work/test_sign/src.ipa
七、生成签名需要用的文件或者其他操作
需要生成csr文件,linux或mac下调用如下命令:
openssl genrsa -out ios.key 2048
openssl req -new -sha256 -key ios.key -out ios.csr -subj "/C=CN/ST=GD/L=SZ/O=vihoo/OU=dev/CN=vivo.com/emailAddress=xxxabcdefg@qq.com"
将生成的ios.csr文件中的证书头和尾部去掉然后换行去掉,即为请求苹果的csr内容
请求苹果后,苹果会返回certificateContent的证书内容,
将内容用证书头包裹—–BEGIN CERTIFICATE—– 内容 —–END CERTIFICATE—– 保存到文件ios.pem文件
调用如下命令生成p12文件
openssl pkcs12 -export -inkey ios.key -in ios.pem -password pass:147258 -out ios.p12
其中147258是签名密码,与最后签名ipa脚本中的密码保持一致即可。