
最关键的需要在mac上 *** 作或用其他网站生成的就是证书<请求文件(csr)>与<证书文件(p12)>, 参见下文
你参考证书申请的说明部分, *** 作就可以。 至于你说的WWDR文件,只需要安装到你机器里就可以。
导出证书要通过你装完证书的机器里的keychain软件到处。不是在网站上导出。
都装好,你打开keychain,左侧有一些选项,你每个点选一下,看看右侧有什么变化。 如果安装正确,右侧就会看到带有钥匙串的证书,这个证书导出时,可以选择p12格式。
你说的逗
Xcode could not find a valid private-key/certificate pair for this profile in your keychain地, 是你的证书和mobileprovision文件不匹配吧。你再看看,是不是下载错了哪个文件。
利用Xcode的命令 security 和 codesign 重签ipa文件。重签名与Xcode里用build打包时进行的签名 *** 作是一个原理,具体来说,先了解一下iOS相关的证书类型。
证书类型:
证书作用:
注:
如果是团队开发,一般会生成p12证书提供给组员使用,这样更加好管理证书。
注:
关于证书类型说明:
添加设备UDID到证书:
iPhone手机轻松获取UDID的六种方式 -
1添加p12证书
2解压ipa包
3修改内容
修改Payload/yourNameapp中的icon图标、Infoplist文件的信息等,如有需要也可以更改比如版本号,应用名称等。
4删除之前的签名 _CodeSignature
5用包里的描述文件生成 entitlementsplist 文件
查看描述文件内容的命令:
上面命令会输出内容:
可以用管道命令 > 保存成 plist 文件:
如果只保留 Entitlements 属性内容,则可以使用 PlistBuddy 命令,我们重签只需要 Entitlements 属性:
注:本步骤的 Entitlements 属性内容非常重要,不能多字段,或者字段设置true或false错误,都会导致异常情况,否则重签是有效,但导致ipa包安装失败~
6替换描述文件
把新的描述文件复制替换到解压后的目录中,这个需要看自己需要,旧包的描述权限与新证书的权限,是需要那些,上一步骤中 Entitlements 就是在重签时还可以在指定。
如果需要查看系统中已经保存的描述文件: ~/Library/MobileDevice/Provisioning\ Profiles/
7给 MachO 文件添加执行权限
解压ipa文件时,app里面的 MachO 文件可能没有执行权限,导致重签的包安装时提示失败。
注,如果Python脚本有对应的库可以查看 MachO,如果是 Shell 脚本,可以利用 Infoplist 文件中已经有 MachO 对应的文件名,可以通过下面命令读取:
当然,一般路径下app的名字与 MachO 一样 Payload/yourAppNameapp/yourAppName 。具体方式大家自行选择~
8获取证书内容
这一步需要读取钥匙串中的开发者证书,可以用以下命令查看下有哪些证书:
上面命令输出:
注意,下面的重签命令,需要使用上面的 "iPhone Developer: ihtcboy@htccom (8RRC787ZH2)" 参数
9重新签名
先重签名framework和dylib(不重签的话,就删除无法签名的插件文件: Framework 、 PlugIns 文件夹、 Watch 文件夹)
再签名app:
注意:签名app需要添加参数 --entitlements entitlementsplist
重签成功后提示:
10压缩Payload 生成最终 ipa 文件
用 zip 文件压缩生成最终的重签后的ipa文件
11验证签名有效性(可选)
macOS 1011 后, codesign 命令增加了验证签名正确性,当然验证签名信息在真机上进行安装可安装就说明可以用。
验证签名正确性:
查看app的签名信息:
12删除安装的p12证书(可选)
如果是公共设备环境,可能执行删除命令,删除步骤1中导入的证书。
13其它可能使用到的命令(可选)
检查一下是否安装了AppleWWDRCAcer:
查看 app 的 entitlements:
关于 iOS 重签名流程就这样简单和清晰的列出来了,但是有非常多的知识点可以深入,需要大家自行实践,还有很多坑点,这里只是简单提一下,深入的命令使用和证书知识、证书安全、命令的注意事项等,需要大家实践见真知!
证书类型选择错误
左侧有两个分类,选择 登录--证书,找到需要导出的文件,右键点击可导出p12文件,如果在 登录--证书 中找不到需要的证书,而在 系统--证书 中能找到,拖动证书到登录即可解决。
当点击Wi-Fi Settings, Advanced界面的“安装证书”;或者在Settings的Security界面下的CredentialStorage界面点击“安装证书”。comandroidcertinstaller包中的CertInstallerMain类会收到Settings发送的CredentialsINSTALL_AS_USER_ACTION intent。
然后,CertInstallerMain类开始创建一个线程,并开始run。在run中,因为收到了CredentialsINSTALL_AS_USER_ACTION intent, CertInstallerMain开始判断SD卡是否存在,这里,我们将证书都push到SD卡里了,SD卡当然是存在的。这种情况下,CertInstallerMain类通过其继承的CertFile类开始读取卡里的所有证书文件。CertFile类读取证书的过程很简单:它把自己设置成了一个FileFilter,在accept方法中,CertFile只接收后缀为CredentialsEXTENSION_CRT, CredentialsEXTENSION_P12, CredentialsEXTENSION_CER, CredentialsEXTENSION_PFX的文件。也就是说当前,Android只支持后缀为crt, p12,cer和pfx的数字证书。
接着,当SD卡里只有一个证书的时候它d出一个安装提示框,当SD卡里有一堆证书的时候,它会d出一个证书列表,这个列表由CertFileList类维护,放点击某个证书的时候,会和当SD卡里只有一个证书的时候一样,调用installFromFile方法,d出一个对话框。CertFile类的install方法会通知CertInstaller来负责证书的安装。
CertFile类对p12证书和其它证书进行了分类,要是p12证书,我给个对话框,输入完密码就OK了。我这里,还使用了WIFI WAP需要的CA证书进行测试。对于CA证书,当点击d出对话框的“确认”对应的按钮后,它会通过CredentialHelper类建立一个comandroidcredentialsINSTALL intent发给comandroidsettingsCredentialStorage类。当CertInstaller类启动后它会直接创建一个CredentialHelper类,CredentialHelper类就直接将安装的证书分类成CA和USER,所以当点击“确认”后,CredentialHelper会将CA证书的信息通过CredentialsEXTRA_CA_CERTIFICATES_NAME和CredentialsEXTRA_CA_CERTIFICATES_DATA放到comandroidcredentialsINSTALL的intent中。
最后,Settings收到了这个intent,通过installIfAvailable()方法,将CA证书的信息保存到了KeyStore中。然后,Settings可以通过KeyStore来读取保存的证书。
以上就是关于使用windows, linux生成Apple iOS p12开发证书全部的内容,包括:使用windows, linux生成Apple iOS p12开发证书、苹果导不出p12证书,是钥匙串的问题么、iOS包重签名技术知识等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)