请问各位大佬,在linux环境下,是否能执行codesign这个命令,

最近公司在做内测安装的一个平台,现在把测试包上传mac环境下进行签名是没有问题的,但是鉴于国内没有商用的mac server,自己搭建成本太高,所以想把签名这部分放到linux下进行操作,但是现在发现唯一的一个框架就是 https://github.com/saucelabs/isign/tree/v1.6.15 ,但是发现好久没人维护,技术现在遇到的核心问题就是如何在linux执行codesign这个命令,所以请问大佬如果想在linux下执行codesing这个命令都需要那些依赖或者有没有第三方可以用的,感谢各位大佬!

Windows, 但是我感觉应该可以移植到 Linux https://github.com/ROM-Knowledgeware/IPASign

而且我忘记了 codesign 的实现, 是在 cctools还是在 Security 组件里.

可以的 脱离mac环境

我记得是调用的Security

这个签名工具https://github.com/saucelabs/isign,我们在centos上已经部署生产环境,签名是和openssl 相关的codesign只是外层封装

请问你那边成功了吗,我这边用isign重签名成功了,但是不能安装。用 codesign -vv 查看是 invalid signature。能交流一下吗,多谢了

说下你的调用过程

isign -c /data/www/ipa_sign/certificate.pem -k /data/www/ipa_sign/key_new.pem -p /data/www/ipa_sign/0313_dev_ldd.mobileprovision -o /data/www/ipa_sign/resigned.ipa /data/www/ipa_sign/Example.ipa -v

这是日志:Signing with apple_cert: /usr/local/lib/python2.7/dist-packages/isign/apple_credentials/applecerts.pem
Signing with key: /data/www/ipa_sign/key_new.pem
Signing with certificate: /data/www/ipa_sign/certificate.pem
Signing with provisioning_profile: /data/www/ipa_sign/0313_dev_ldd.mobileprovision
got executable /usr/bin/zip for zip
got executable /usr/bin/unzip for unzip
precheck
path: /data/www/ipa_sign/Example.ipa
extension match
extension match: .ipa
this is an archive, and a zipfile
found one app
is_native: True
found one app
File /data/www/ipa_sign/Example.ipa matched as IpaArchive
got executable /usr/bin/unzip for unzip
wrote Entitlements to /tmp/isign-atXqAy/Payload/Example.app/Entitlements.plist
working on /tmp/isign-atXqAy/Payload/Example.app/Example
Resigned bundle at </tmp/isign-atXqAy/Payload/Example.app>
got executable /usr/bin/zip for zip
archived IpaArchive to /data/www/ipa_sign/resigned.ipa
removing ua: /tmp/isign-atXqAy

这种情况一般是 pem 或者 mobileprovision的原因,重新生成一下试试看

需要更新isign这个项目里自带的 applecerts.pem 吗

必须的,换成自己p12生成的 pem

大佬有遇到过重签名成功iOS10能安装 iOS11不能安装的情况吗

终于遇到有人研究codesign了

从我目前研究的结果来看,ios12以下很多工具都可以,ios12及以上由于增加了CoreTrust的原因,还没有谁实现了linux环境下的重签名工具。详细原因可以参考我目前的进展

如有突破,还请不吝指教!

具体原因需要具体分析,官方的codesign只会签一层,如果app内有appex、framework之类的需要先签里面的包,再签外面的。另外安装失败可以通过xcode查看控制台信息

大佬 问个问题 isign 的参数 -c /xx/xx/xxx.pem -k /xx/xx/xx.pem 都是那些指的那些文件? 我现在有 导出的p12文件,然后把这个文件 转换成了 pem 这个是给 -c 用的 还是给 -k 用的? 那剩下的那个要用那个文件?

大佬 你是在 mac 上重签还是 linux

isign_export_creds.sh里有说明 导出的p12文件生成两个pem文件 ,
openssl pkcs12 -in *.p12 -out certificate.pem -clcerts -nokeys
openssl pkcs12 -in *.p12 -out key.pem -nocerts -nodes

请问问题解决了吗

嗯嗯 这弄好了。但是 我现在 在 linux 的 ubuntu上面使用 isign 这个工具 去重签的时候 报错了 说我的 certificate.pem 没有 subject 内容 。但是我看是有的。 这个大佬有碰到过吗?具体报错可以看这个 isign 里面 issues的116

没有,我遇到的问题和 @yzy 一样。签名完成后查看是invalid signature