Fastlane 根据p12证书手动生成Match管理证书并 配置打包至 appStore

fastlane match 根据p12文件手动生成Match管理需要的证书。

最近项目的情况是,由于公司产品发布的appstore账户的切换后,该appstore上已经存在了3个账户,已经无法生成match管理的证书了。只发了一个p12的正式的证书。

下面的根据上面的情况,做的流程。
注意:因为还有一个包含fastlane上传appstore的记录在本文中,所以看上去会有点乱。


Fastlane 配置上传至AppStore相关


生成appstore证书

fastlane match appstore

工具集说明如下:

1. scan

自动运行测试工具,并且可以生成HTML文档报告

2. cert

自动创建和管理iOS签名证书(Certificates)

3. sigh

创建、更新、下载、修复Provisioning Profiles的工具

4. pem

自动生成、更新推送配置文件

5. snapshot

使用Xcode7的UITest功能实现自动化截图

6. frameit

把截取的图片套上一层外边框

7.gym

自动化编译工具,用来打包ipa或者pkg文件

8.deliver

自动上传截图、App的元数据、二进制(ipa)文件到iTunes Connect

9.produce

在iTunes Connect或者Apple Developer Center上创建新的iOS应用程序

上传至AppStore 需要创建:deliver

安装方法:

sudo gem install deliver

初始化:deliver

fastlane deliver

报错信息:

[!] The request could not be completed because:
    Could not set team ID to 'XXX', only found the following available teams:

- 1********* (Mo**** ****** ***** (****) Co., Ltd.)
- 1********* (Si**** ****** ***** ***** Co., Ltd.)

原因是:team ID to 'XXX'不对

修改id后成功,生成:metadata获取appconnect上面填写的基本信息, screenshots文件夹,是截屏的图片保存

这里有个小问题,iTC和ADC中的Team ID是不一样的,在fastlane init中只会自动在Appfile里写入ADC的team_id,所以在这个过程中会不停的问你iTC的Team ID,所以在创建完Appfile后,手动在里面添加itc_team_id。
app_identifier "com.**.**" # The bundle identifier of your app  
username "njafei@163.com" # your Apple ID user
force true #don’t show me the preview html
submit_for_review false # 这个开关就是控制是否要展示的


根据p12证书生成match需要的证书


根据p12证书生成match需要的证书

p12证书的密码:123456

1. 拿到你想要复用证书的ID

关于这个证书ID,从钥匙串和openssl工具库中没有找到方法来取到,但是可以通过spaceship这个库来实现,下面是相关脚本:

这个脚本为fastlane里面的,需要单独创建;

命令:
fastlane spaceship

报错提示:Could not find gem 'pry'

安装:

sudo gem install pry

这是一个ruby脚本,需要创建ruby脚本,然后在运行这个脚本:

require 'spaceship'
Spaceship.login('38****@qq.com') #自己的AppID账号
Spaceship.select_team
Spaceship.certificate.all.each do |cert| 
  cert_type = Spaceship::Portal::Certificate::CERTIFICATE_TYPE_IDS[cert.type_display_id].to_s.split("::")[-1]
  puts "Cert id: #{cert.id}, name: #{cert.name}, expires: #{cert.expires.strftime("%Y-%m-%d")}, type: #{cert_type}"
end

执行上面代码,会输出所有证书的相应信息,你可以从中找到你想复用的那个证书的ID。


➜  推送证书相关 touch get_cer_id.rb
➜  推送证书相关 open .
➜  推送证书相关 ruby get_cer_id.rb 
Multiple teams found on the Developer Portal, please enter the number of the team you want to use: 
1) 247W*****8R "M****n ***** **** (****) Co., Ltd." (Company/Organization)
2) 68Y******86 "S****** C****y **** Technology Co., Ltd." (Company/Organization)
1
Cert id: 3********, name: iOS Development, expires: 2019-05-18, type: Development
Cert id: D*******, name: iOS Distribution, expires: 2019-05-18, type: Production
Cert id: 2*******, name: iOS Development, expires: 2019-08-31, type: Development
Cert id: 4********, name: iOS Development, expires: 2019-09-04, type: Development
Cert id: X*********, name: APNs Development iOS, expires: 2019-09-04, type: DevelopmentPush
Cert id: T*********, name: Apple Push Services, expires: 2019-10-04, type: ProductionPush
Cert id: 9*******, name: iOS Distribution, expires: 2019-09-04, type: Production
Cert id: 2*******, name: iOS Development, expires: 2019-09-19, type: Development
Cert id: X********, name: iOS Distribution, expires: 2019-12-27, type: Production
Cert id: Y********, name: APNs Development iOS, expires: 2020-05-06, type: DevelopmentPush
Cert id: R*******, name: Apple Push Services, expires: 2020-06-05, type: ProductionPush
Cert id: Y******, name: iOS Development, expires: 2020-05-06, type: Development
➜  推送证书相关 


生成加密的证书:

从Apple Developer中下载现有的证书及mobileprovision文件,将证书导入到钥匙中,并生成p12文件。得到的证书和配置文件还不能被match识别,需要通过加密命令加密后才符合match的验证要求,其中使用到的命令有:

备注: bundleid 的绑定是根据match文件里面的bundleid来匹配的

1、 生成key.pem文件;加密证书

执行生成.pem文件,p12证书为想使用的p12证书,如果在哪个路径下面在执行这个,会在当面目录下生成pem的文件
openssl pkcs12 -nocerts -nodes -out dev_key.pem -in dev.p12

2、生成最后需要的证书

2.1 生成:cret_id.p12文件

2.2 生成:certificate.cer文件

openssl aes-256-cbc -k <your_password> -in dev_key.pem -out <cert_id>.p12 -a
openssl aes-256-cbc -k <your_password> -in dev.cer -out <cert_id>.cer -a

pem.key 的密码是:123456
dev: 123456
dis: 123456

到此配置基本结束,但是还有工作没有完成,很重要需要:

fastlane match nuke development
fastlane match nuke distribution
fastlane match nuke appstore

如果这里遇到问题,删除不了的话,就只有手动去开发网站删除。后再次创建描述文件就可以了:

fastlane match adhoc
fastlane match development
fastlane match appstore

总结:

  1. 最大的问题是因为对match的证书的反制作过程不了解原理
  2. 根据p12文件,安装到本地的keychain中,然后对其进行导出一个dis.cer文件,因存在dis.p12文件而不用再次导出。
  3. 因为dev的证书是直接从appstore中下载的,所以需要导出一个dev.cer文件,一个dev.p12文件
  4. 关于没个创建证书的时候会填写的creat_id是根据那个ruby脚本获取到的信息里找到到期时间匹配的id

文章写的有点乱,可能有错误的地方,因时间关系,没有做仔细的校验工作。
如有问题请issue me

借鉴原文地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容