Skip to main content

签名相关知识

1.列出所有证书#

  • 方式一
security find-identity -p codesigning -v
  • 方式二
security find-identity -v -p codesigning        

2.生成 entitlements.plist#

新建一个 Xcode iOS App 项目,编译生成目标 App.从目标App 中获取 embedded.mobileprovision, 或者从开发者账号后台下载 Provisioning Profile文件,然后提取其中的授权文件(注意:授权文件中的 Bundle ID 要和重签名应用的 Bundle ID 匹配),具体如下

security cms -D -i embedded.mobileprovision > profile.plist/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' profile.plist > entitlements.plist

3.复制mobileprovison 到. app 目录下#

4.签名,#

4.1.对. app 文件夹中的所有动态库-插件- watch 目录下的 extension 进行签名#

codesign -f -s E667ADE527274C51B22E1EDB77E476204700A44F xxx.dylib

4.2.对整个. app 文件夹进行签名,具体如下#

codesign -f -s E667ADE527274C51B22E1EDB77E476204700A44F --entitlements entitlements.plist WhatsApp.app 

5.打包 ipa#

mkdir Payloadcp -r Target.app ./Payloadzip -qr Target.ipa ./Payload

6.查看CertificateSigningRequest.cerSigningRequest 文件#

openssl  asnlparse  -i  -in  CertificateSigningRequest.cerSigningRequest

7.查看 iOS_develoment.cer文件#

openssl  x509  -inform  der  -in  ios_development.cer  -noout  -text

8.解压#

 /usr/bin/unzip  -q  xxx.ipa  -d  <destination>

9.签名 dylib 或者 extension#

9.1方式一#

codesign  -fs E667ADE527274C51B22E1EDB77E476204700A44F   xxx.dylib

9.2方式二#

codesign --force --verify --verbose --sign "iPhone Developer: xxx xxxx (xxxxxxxxxx)"dumpdecrypted.dylib

10.查看签名信息#

codesign  -vv  -d  xxx.app

11.验证签名#

 codesign  --verify  xxx.app

常见错误#

main executable failed strict validation#

codesign -f -s xxxxxx --no-strict --deep libcklib.dylib