搭建 超级签 详细攻略

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

ln -s /usr/local/ruby-2.6.4/bin/ruby /usr/bin/ruby
ln -s /usr/local/ruby-2.6.4/bin/gem /usr/bin/gem

gem install fastlane
gem install pry
gem install spaceship
gem install pry-coolline
gem install rails
gem install mysql2

yum install zip

python 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)
    #导出 客户端.pem
    system "openssl pkcs12 -password pass: -in #{p12文件路径} -out #{客户端.pem路径} -clcerts -nokeys"
    #导出 私钥.pem
    system "openssl pkcs12  -password pass: -in #{p12文件路径} -out #{私钥.pem路径} -nocerts -nodes"

问题3和4:

	#登录帐号
    Spaceship::Portal.login(username, password)
    
 	#添加 bundleId
    app = Spaceship::Portal.app.find(bundleId)
    if !app
        app = Spaceship::Portal.app.create!(bundle_id: bundleId, name: bundleId)
    end

  #如果uuid不存在则添加uuid
    if !Spaceship::Portal.device.find_by_udid(uuid)
        Spaceship::Portal.device.create!(name:uuid, udid: uuid)
    end

  #创建 ad_hoc
  	profile = Spaceship::Portal.provisioning_profile.ad_hoc.create!(bundle_id: bundleId, certificate: cert, name: username)

	#获取所有设备号
	devices = Spaceship.device.all
	Spaceship.provisioning_profile.ad_hoc.all.each do |p|
	     # 根据cert 证书创建
	     #更新 ad_hoc
	     p.devices = devices
	     p.update!
	end
    Spaceship.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

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
下面是搭建Opengrok的详细步骤: 1. 安装Java和Tomcat 在搭建Opengrok之前,首先需要安装Java和Tomcat。可以从官网下载Java和Tomcat的安装包,并按照安装向导进行安装安装完成后,可以通过在命令行中输入`java -version`和`catalina version`来确认Java和Tomcat是否安装成功。 2. 下载Opengrok 可以从Opengrok官网上下载最新版本的Opengrok,也可以从Github上获取最新的源代码。下载完成后,解压缩到任意目录下。 3. 配置Opengrok 在Opengrok的安装目录下,有一个名为`configuration.xml.sample`的文件,将它复制一份到同一目录下,并将复制的文件名改为`configuration.xml`。然后,使用文本编辑器打开`configuration.xml`文件,将其中的`<sourceRoot>`标中的路径修改为需要索引的代码库所在路径。如果需要索引多个代码库,可以在`<projects>`标下添加多个`<project>`标。 4. 构建索引 在Opengrok的安装目录下,有一个名为`OpenGrok`的脚本文件,可以使用该脚本构建代码库的索引。在命令行中运行以下命令: ``` ./OpenGrok index ``` 构建索引需要一些时间,取决于代码库的大小和复杂度。构建完成后,可以在`<dataRoot>`标指定的目录下查看索引文件。 5. 部署Opengrok 将构建好的Opengrok.war文件复制到Tomcat的webapps目录下,并启动Tomcat。此时,可以在浏览器中访问`http://localhost:8080/opengrok`,就可以使用Opengrok了。 如果在访问Opengrok时出现404错误,可以尝试将Opengrok.war文件的名称修改为opengrok.war,并重启Tomcat。如果仍然无法访问,可以在Tomcat的logs目录下查看catalina.out日志文件,查找错误信息进行排查。 以上是搭建Opengrok的详细步骤,如果遇到问题可以参考Opengrok官方文档或者在Opengrok的Google Group中寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值