开心签名--代理签名


IOS代理签名,可以让有证书的人部署自己的证书在自己服务器上,而只提供一个授权文件,不提供证书文件和密码给他人的情况下,他人使用这些证书进行签名,不需要提供证书文件就能实现ipa包签名。这保证了证书拥有者保证自己证书的安全,也可以让无证书的人员在没证书的情况下进行签名。

  1. 代理模式流程
  2. 怎样生成授权文件?
  3. 生成秘钥文件
  4. 代理签名界面版教程
  5. 代理签名命令版教程

什么是代理签名

代理签名指有证书的人通过部署证书在自己服务器,并通过通用授权文件,授权他人使用证书,从而远程连接到授权文件中绑定的证书信息,进行签名操作。代理签名的证书都是部署在证书拥有者自己的服务器上。需要联系我们获取服务器接口文件,把文件放在服务器上,代理可以通过接口获得证书信息进行签名,但是无法获得证书内容。 如果你想购买某人的证书,可以提出让其部署通用接口,售卖授权给您。如果您有证书想卖但是担心被转卖,也可以部署服务器接口,从而控制证书的传播。

授权文件介绍

授权文件用于给代理分配相应的签名权限,通过公私钥保证信息传递的安全性,权限包括指定代理人、限定签名次数或限定代理人签名时所使用的电脑设备、限定授权到期时间等。

密钥文件介绍

密钥文件包含公钥文件和私钥文件,分别存储一对公钥和私钥。公钥和私钥是俗称的不对称加密方式,是一对密钥对。

公钥与私钥的作用:公钥与私钥是成对存在,私钥用来进行解密和签名,是给代理使用的;公钥是用于加密和验证签名,是本人使用,可以保证信息传递的安全性。

代理模式流程

  1. 生成授权文件

    用户A通过“代理签名--生成授权”功能,填写授权文件所需信息,通过工具算法加密后得到xxx.license授权文件

  2. 授权签名

    用户A可以把xxx.license的授权文件发送给其下级代理,代理通过使用开心签名工具和xxx.license授权文件即可对ipa包进行签名

怎样生成授权文件?


打开开心签名工具界面版,进行登录后,进入到代理签名面板,点击底部“生成授权”按钮,如下图:

ScreenShot

填写参数说明:

  • 授权人:用于备注授权来源,填写自己的开心签名工具账号

  • 被授权账号:赋予授权的代理人的开心签名工具账号

  • 证书URL:通过该URL地址获取证书信息

    用户需要把自己的证书文件部署在自己的服务器上,参考我们提供的接口文件格式提供访问接口

    这样就可以有效避免证书文件、密码等源文件信息泄漏

  • 机器码:用于限定代理签名时所用设备的唯一性,若不限制可以不填

    机器码的获取:在开心签名工具=我的信息面板中 有机器码显示 可以复制机器码

  • 授权次数:在有限期内,授予的使用签名的次数

  • 到期时间:授权的到期时间

  • 公钥文件:公钥文件的存放路径

  • 私钥文件:私钥文件的存放路径

    请务必保证公钥文件和私钥文件是匹配成对应的关系

  • 保存授权至:待生成的授权文件的保存路径

填写效果参考:

ScreenShot

生成秘钥文件

打开开心签名工具界面版,进行登录后,进入到代理签名面板,点击底部“生成秘钥”按钮,如下图:

ScreenShot

选择好公钥文件和私钥文件的保存路径,点击生成秘钥按钮即可生成对应的秘钥文件。

代理签名界面版教程


代理签名-单个ipa签名步骤

1.打开开心签名工具并登陆

2.在代码签名面板下,选择需要签名的ipa文件

3.确认签名后文件存放的文件路径

4.选择好签名所用的授权文件、证书

根据需要选择是否去锁、加时间锁、覆盖签名

5.点击开始签名

ScreenShot

代理签名-批量签名步骤

1.打开开心签名工具并登陆

2.在代码签名面板下,选择含有多个ipa文件的文件夹(支持子目录下的ipa文件)

3.确认签名后文件存放的文件夹路径

4.选择好签名所用的授权文件、证书

根据需要选择是否批量覆盖、批量加时间锁、批量签自动去锁

5.点击开始签名

ScreenShot

常见错误

  • 信息填写不完整引起的信息缺失

    确保ipa、授权文件、证书都选择好 信息完整

  • 授权证书获取 连接超时

    选择好授权文件或点击刷新证书后弹出以下错误

    ScreenShot

    检查当前网络环境是否正常,若网络正常,则咨询授权人证书读取链接是否可访问

  • 授权文件验证失败

    选择好授权文件后弹出以下错误

    ScreenShot

    说明授权文件内容已被改动过,考虑恢复改动或联系授权人重新获取授权文件

代理签名命令版教程


1.登录账号

./ausign.exe -email 85209630@qq.com -p 123456

./ausign.exe 运行重签程序

-email 输入用户邮箱

-p 输入用户密码

2.查询授权证书列表

./ausign.exe -lcert iptest.license

./ausign.exe 运行重签程序

-lcert 授权文件路径

ScreenShot

如图,status的值为1,表示获取成功,message中对应的参数值["abc","dev"],则代表该授权文件包含了2个证书信息,一个证书信息是abc,一个证书信息是dev

如果status的值为0,则说明获取失败,message中对应的值则为错误返回信息

常见的错误是 message:“Parse License Fail” 授权文件解析失败

3.代理签名

简单代理签名例子:

./ausign.exe  -asign hello.ipa -l iptest.license -cn dev -o resign-hello.ipa 

./ausign.exe 运行重签程序

-asign 被签名的ipa文件

-l 授权文件路径

-cn 授权文件中包含的证书信息项,由步骤2中提前获取

-o 重签后的ipa文件

ScreenShot

.app文件签名例子

除了对直接.ipa文件进行签名外,还支持对.ipa文件解压后得到的.app文件夹进行签名

./ausign.exe -asign hello.app -l iptest.license -cn dev -o resign-hello.ipa 

说明:将xxx.ipa文件修改其文件扩展名为xxx.zip,可以得到压缩包文件,解压压缩包后得到Payload\xxx.app,然后可以xxx.app文件夹进行重签名

自动删除锁签名例子

./ausign_linux -asign wechat.ipa -l iptest.license -cn dev -o resign-wechat.ipa -dt

和普通签名相比多了一个参数 -dt 表示 delete time lock,删除时间锁的意思

自动插入时间锁例子

./ausign_linux -asign wechat.ipa -l iptest.license -cn dev -o resign-wechat.ipa -at 20190701

和普通相比 多了 -at 20190701参数,表示 add time lock,就是添加时间锁的意思,-at 后面是签名到期的时间

修改应用id后签名

./ausign_linux -asign wechat.ipa -l iptest.license -cn dev -o resign-wechat.ipa -id com.tencent.wechat22222222

把应用id 改成com.tencent.wechat22222222 后重新签名

可以修改的信息还有 -n 指定修改名称 ,-v 指定修改版本号

更新签名

更新现有应用编号为100876的应用签名

./ausign_linux -asign wechat.ipa -l iptest.license -cn dev -o resign-wechat.ipa  -replace 100876

-replace 100876 参数,100876是应用的编号,可以通过 ausign -apps 查看所有app id值(编号,一个数字)

组合签名例子

./ausign_linux -asign 2.ipa  -l iptest.license -cn dev -o resign-555.ipa -id “com.tencent.wechat3” -n “微信马甲3” -v “1.0.0” -dt -at 20190902

上面各种参数可以组合使用,下面是一个例子,自动删除时间锁,自动插入时间锁设置到期日期20190902,然后把id修改为自己的com.tencent.wechat3,把名字修改为微信马甲3,把版本号改成1.0.0