ios重签名shell脚本_03:双层签名和重签名流程以及shell脚本重签名

复习

1:双向签名7不流程

2:查看签名信息和证书信息

3:查看用户权限

4:shell脚本签名

目录

1:双向签名7不流程

2:查看签名信息和证书信息

3:查看用户权限

4:shell脚本签名

正文

一:双层签名、双向验证

双层签名、双向验证。

1:签名示意图

2:两对秘钥、双层签名、双向认证

公钥M,私钥M(他们是一对)

苹果服务器:私钥A,

iOS手机系统:公钥A

2.1:Mac电脑通过csr文件向苹果服务器申请证书,

csr里面有公钥M,其他的必要信息,

2.2:苹果服务器会把证书给mac电脑。

证书:证书是苹果服务器用私钥A对公钥M的一个签名。

包含了公钥M,和公钥M的签名信息,签名信息使用私钥A来签名的。

使用苹果手机的公钥A来验证的。

2.3:描述文件:

设备id列表

appid,应用列表

权限文件

证书在描述文件里面。

2.4:Mac电脑拿到证书、描述文件。

打包生成ipa包。

用私钥M对可执行文件进行签名。app的签名。

把证书放到app中。

打包的时候,会把描述文件放到app中,描述文件包括了证书,应用列表

2.5:把app安装到ios系统中。

p12就是私钥M,

1:用公钥A对证书进行解析,解析出公钥M

iOS上苹果的公钥把provisioning profile文件解密了就验证了这个app是经过苹果官方认证的,

2:用公钥M对app进行验证。

也就验证了这个app来自于你这个开发者。不是别人冒充的。

3:描述文件限制:provisoning profile

现在有证书了,就可以安装所有的设备,那就不用上传到appStore。

所以苹果进行了限制,

1:限制设备

2: 具体对某一个app进行签名,对推送,进行了限制。

3:entitlements(授权文件)

描述文件: 里面包含了授权文件和证书签名、

4:查看描述文件的信息

security cms -D -i ****.mobileprovision

用来查找provision profile文件地址

/Users/XXX/Library/MobileDevice/Provisioning Profiles

xxx是文件名字

Entitlements  权限

application-identifier:bundleid

get-task-allow:是否允许调试

ExpirationDate:过期时间

ProvisionedDevices:注册的设备

xxx.mobileprovision 文件是一个plist文件

AppIDName

CreditDis

ApplicationIdentifierPrefix

5876MU3PLA

CreationDate

2019-10-29T00:46:09Z

Platform

iOS

IsXcodeManaged

DeveloperCertificates

MIIFuzCCBKOgAwIBAgIIcsooDVry1SswDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTkxMDI5MDAzMjU4WhcNMjAxMDI4MDAzMjU4WjCBrjEaMBgGCgmSJomT8ixkAQEMCkNMM0hLQzlFWjcxMjAwBgNVBAMMKWlQaG9uZSBEZXZlbG9wZXI6IEppYXFpIFdhbmcgKE1MMzlDRkUyQzgpMRMwEQYDVQQLDAo1ODc2TVUzUExBMTowOAYDVQQKDDFDaGluYSBFdmVyYnJpZ2h0IEJhbmsgQ08uLCBMVEQgQ3JlZGl0IENhcmQgQ2VudGVyMQswCQYDVQQGEwJDTjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL1Z4VdrWZtiSiT+MvhcCIaxRh6nAEzTkD3d+PIyOewG2hMZU/2awGpy9TcGpqywYMvtANuOkEQTCjJa7XN2PJ2T/06KWrgrY5SPtDJycW9MwxIA3KSJfGd+GSUthHTxIFJI/GKiTYZiMTEoAi87ooGznMPz5R7qHi4WOhicQmQOz+kSH5y3nDOIzFk5qxDMLYhPmhg40tXe6WUsS5ssk8DbE767pRPitc7u7AjW74OCnrqdxzaQbLqG2vVsJMLZlB/wBuVXtl9GhITy72GtZV7BRrc6dEEAFjxAq/kzFT/CIP9mNszDnK3AfXPdkRYqM3KwPj4ZQDUOlmtcvukBiBMCAwEAAaOCAfEwggHtMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUiCcXCam2GGCL7Ou69kdZxVJUo7cwPwYIKwYBBQUHAQEEMzAxMC8GCCsGAQUFBzABhiNodHRwOi8vb2NzcC5hcHBsZS5jb20vb2NzcDAzLXd3ZHIwMTCCAR0GA1UdIASCARQwggEQMIIBDAYJKoZIhvdjZAUBMIH+MIHDBggrBgEFBQcCAjCBtgyBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMuMDYGCCsGAQUFBwIBFipodHRwOi8vd3d3LmFwcGxlLmNvbS9jZXJ0aWZpY2F0ZWF1dGhvcml0eS8wFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwMwHQYDVR0OBBYEFJoySx21Ev0zLAbG+oYHy6pxToQVMA4GA1UdDwEB/wQEAwIHgDATBgoqhkiG92NkBgECAQH/BAIFADANBgkqhkiG9w0BAQsFAAOCAQEAODu/C2XVJCKcqEsMfjS1oKtn2ghsmjjTPhok3SDhJv40icfLDtF93Q9dqLkiOktf1ec48z1T3otAD8VPJFLbAu9+GKsmsVw5i38wwl2U9rz5DXyP7A4tOST9azatALdTw01Fbkic3lD9TkilpUX+cMnyStqWsGa7808mAaPm0aGWIhp5Kw4/pVYmpT67TBxqCFfzGv2Yh4wCMYkS3/fXDEbsdAM3ii+XaOqRCM7EyGeWr5240MftQ14h7DDrMXIfJQebOVr4l1LN34bujMWpvouBx1oqyLO+GhsM2ZOHrqc85/ETKt6w6XP39wkh6QFd4wYIbhzKEPjeIU2Pa+gWIg==

MIIF0TCCBLmgAwIBAgIIPbTqTqhHMtowDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTkxMDIyMTAwMTI0WhcNMjAxMDIxMTAwMTI0WjCBrzEaMBgGCgmSJomT8ixkAQEMCkNMM0hLQzlFWjcxMzAxBgNVBAMMKkFwcGxlIERldmVsb3BtZW50OiBKaWFxaSBXYW5nIChNTDM5Q0ZFMkM4KTETMBEGA1UECwwKNTg3Nk1VM1BMQTE6MDgGA1UECgwxQ2hpbmEgRXZlcmJyaWdodCBCYW5rIENPLiwgTFREIENyZWRpdCBDYXJkIENlbnRlcjELMAkGA1UEBhMCQ04wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9WeFXa1mbYkok/jL4XAiGsUYepwBM05A93fjyMjnsBtoTGVP9msBqcvU3BqassGDL7QDbjpBEEwoyWu1zdjydk/9Oilq4K2OUj7QycnFvTMMSANykiXxnfhklLYR08SBSSPxiok2GYjExKAIvO6KBs5zD8+Ue6h4uFjoYnEJkDs/pEh+ct5wziMxZOasQzC2IT5oYONLV3ullLEubLJPA2xO+u6UT4rXO7uwI1u+Dgp66ncc2kGy6htr1bCTC2ZQf8AblV7ZfRoSE8u9hrWVewUa3OnRBABY8QKv5MxU/wiD/ZjbMw5ytwH1z3ZEWKjNysD4+GUA1DpZrXL7pAYgTAgMBAAGjggIGMIICAjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFIgnFwmpthhgi+zruvZHWcVSVKO3MD8GCCsGAQUFBwEBBDMwMTAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuYXBwbGUuY29tL29jc3AwMy13d2RyMTkwggEdBgNVHSAEggEUMIIBEDCCAQwGCSqGSIb3Y2QFATCB/jCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjA2BggrBgEFBQcCARYqaHR0cDovL3d3dy5hcHBsZS5jb20vY2VydGlmaWNhdGVhdXRob3JpdHkvMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBSaMksdtRL9MywGxvqGB8uqcU6EFTAOBgNVHQ8BAf8EBAMCB4AwEwYKKoZIhvdjZAYBAgEB/wQCBQAwEwYKKoZIhvdjZAYBDAEB/wQCBQAwDQYJKoZIhvcNAQELBQADggEBAD/HiK9wAlfSt5aJQuT8XyzcpqTdkHlJjxGegPE+thaHsRNqP38Q4N15iFEHl5sFzdRnc4yaTkT9YyZZpCwxpbnQfpHxsWlUQFmtcyDdtvu3XJpb6xcmzirSYmBhXAzwC7SmcohqAGqcI8p4c+b0QlI523Yzk8W2Mqi73p4hBDt6kHAWq1h73/Uc1msU9989B6Bwzifq6BYKHHHhZpPqUDYhtOIZpEQiCveSll9EguKoIPOiYpxlMT4/DVXNOytHVvSz+JiSzWD3xuygSblWKVRrMEo6khTTkvvI2jDk1wzxgAL4fKZqES5ezzgssYiP4oIL/wSaBrj7zIq0XqSDnKc=

Entitlements

application-identifier

5876MU3PLA.com.cebbank.xyk

keychain-access-groups

5876MU3PLA.*

get-task-allow

com.apple.developer.team-identifier

5876MU3PLA

aps-environment

development

ExpirationDate

2020-10-28T00:46:09Z

Name

yghsh_dev_20191029

ProvisionedDevices

5257bcb8938e4e6dbbe908622450918a5bdc61f9

25ca953841c6c3f97e1d916f44f76d796fa058a9

7e0da1c205d9a58c868266d99f2c8a17d4f65642

43e3673c83a1056d1463f7e902ecaded99c0e8db

e7447c0751a0ef7c8c84f7e72c0967fc064f8b21

76593166cd370a9e975ed3005783fa3690fb97eb

976dd4e3ec1931ca0d486fbf2dc6820bd369e891

bba882d248f21a6df38604b89122e63aa0bb2a0b

ec54ec221d5a62da45052433f92a5aafbdd9fa58

066eb234a8b151b0a1fa0ffec022c34665213b07

fdcf5eff39336079294dc39e19249b714274c4d9

0ccb4fb26f7c4dc5577dd1a4b9657390b17b0112

8023c4f949eead298073482341a0df95f1b32a7e

551f3b95cfed25879bce15577d29964b309a0d3d

456dd8ab4e8d9810f37990275ee49b6c6395603f

f8d5971a8f8cade0bb50056516d05d926665e954

c2320e6c1afea74cc3299da09534430fdd43fbba

14113f41ba942973e3d1febd7b0157f4d899ebd4

3edd2ed0cfc37e14310b32aa28b56a511fa7b4ad

40cf9e14609c8de2a4ec9911ac885490ab6f8955

bf12dfaa8369720db79800dce2b0d1bdf1cea1b7

23c219ec1549539885431116d114ed69a366efb9

4eec9a9c4a326e13e88e5c2af8ecf8202aa317ee

5329d4406834956dceb7ebd86f4fc317a695f730

ae2417fd5ff7713a032990e941d9e0c7aa95a149

f46cd8714b3663379a76c418f3a5b50b3caab8b7

3dcdc6a109f754773703d2d7d85ee00d7a3ef56a

9250f2f39cc7da26fd8ec65ee910ca9c0f907514

6bbad9e1591205d92a8620c58208dbc5839ccf18

f0a299ffdbb19f1e8ed5088f45743ee21f6c9e96

458c9b1a6909245e39c9f7bcface72bb3d1d39d0

44ad18e054338547898c748da0e169dc9f1c1c0f

d1543a75aa8f622a0f6e09e0c52a7017627a8c03

e16ef4e8b06878054584000a8b9b02df6745c3f5

04d9ed9cb1eb6931305b42299b3cd54b2dc4835d

5a7b9823fc4b7219343167f9aef1fefcc4668189

23387ab926ec9e0e98198d015ea53a8362cfdee5

6bcfeab3efaf8abf6d94faea7c087a99c92f6a16

aaa1a4e15a8a4134dd14155321b8e8f02fba3ffa

2a2cdb96bdd9223b88bd24f051db743f27cda082

ea07b7635387b0aa91f52f25e27c91e611719c3d

5c7b2d58973f22aceedfb08c815ed40171bb3a0f

ab86138f55e2e7454fb60af7f9d7300d1c4aa19a

9319ce7d8d7454708eaa3ec36e6e5d0f64c2d5e6

e835f7ded888bdcc131b13be90898ea2552e8b0c

e1ca8bfcf4f8223f901d2a53e1b16806e6219100

a247c65267217583ecb3c0113eb69413bcae4061

35bba4f8ca9f116b6f0ea7297a2597502606cbd9

cacee5eb9ba753203b367765f73a55d0c10705b3

aea988226969f7dc0ebdd2873d3a0a9870b6d2ea

a602fbd7d3adc4a3ba90b95936f350f1850ca748

ac83a77644b7c5d5c3ce78256a5b13f84bb47ef2

86a95f3b4dbf8339b3a2c5441680adc1a7e91371

853d41c50b39c3bddff96347ca4d04664601e24f

0ee2ac1da3ebe717a4aad48eda94ee7bd1895325

1a719ca3a81c8c06e87738c525cb2362897d1aef

5281a7049193939a001cb4d4d322cd0d090e8389

41afb7542e698deccca1a8c133c60f2bf6e926b6

6904333738e8343b7c00a381ed3483d65797340b

98d6368b6c261914759ccea78c618cb1bbb090fb

00008020-001920582130003A

6ccc35714ae1ef652b3dfd9b2208665b746c1d37

4ba06a53801cf244b0f02be3cdb5e9bd3ea5182d

98969ca6f2b59853f64ac06caf8690f5da07067b

00008020-001C646834D8002E

00008020-000838110E82002E

0694b66582a715f2b86a8e406c5a331dadecbe17

1f6a4788b00d9689fb6d3cd4412ddfd746b588c3

ec07b36ad5e1d92aa1b9bc091a17bd1587fec877

ddd1ae9addf883966df082eecc00babdd1119389

fa43b4b1b37bcb37b6b9f25bf12818b182337a72

1f81b591571baf2777049eacd419477553500520

00008020-000E19620A38002E

00008020-001A54640CF8002E

00008020-001A54C80E52002E

e99c115fbc62fc087b5d1da9c05734a3686858eb

e864964d45d686fecd93379fee8aefe18ccd561e

d18613efb0b8aa36863c8702229184c374515204

TeamIdentifier

5876MU3PLA

TeamName

China Everbright Bank CO., LTD Credit Card Center

TimeToLive

365

UUID

3c4c436e-1320-41b4-819c-7bf90d0c38b8

Version

1

View Code

5:.app里面的签名信息

codesign -d -vv **.app

1:CodeResources:是资源签名

2:应用签名在macho文件中

6:签名流程

双向签名流程

1.在Mac上生成一对公私钥,分别为公钥L,私钥L

2.Apple 官方有自己固定的一对公钥和私钥,私钥A存在Apple后台,公钥A内置在iOS设备

3.把公钥L 上传Apple后台,Apple后台用私钥A对公钥L进行签名,将得到的签名+公钥L打包起来,称为证书

4.在苹果后台申请AppID,配置好设备IDs, Entitlements,这些额外信息+3中的证书组成的数据用私钥A签名,最后证书+额外信息+签名组成 Provisioning Profile 文件,下载到Mac本地

5.开发时,编译完一个app后,用本地私钥L对app进行签名,然后把4中的Provisioning Profile文件打包进App里,文件名为embedded.mobileprovision,安装到手机上。

6.安装时,iOS设备内置的公钥A对embedded.mobileprovision的数字签名进行验证,同时对里面的证书的签名也会验证(用来验证是苹果官方授权的)

7.如果6中验证通过,确保了embedded.mobileprovision的数据是苹果授权后,再取出里面数据做各种验证,包括公钥L对app签名进行验证,验证设备ID,AppID,权限开关。(用来验证app是这个公司官方开发的app。)

二:重新签名

1:获取ipa包

助手,

越狱手机中copy,

iTurns:12.6.3版本。

2:   查看签名和证书

2.1:查看签名信息Xcode用codesign签名

codesign -d -vv **.app

2.2:查看证书

security find-identity -v -p codesigning

2.3:查看有没有加密,没有加密可以操作

在***.app文件夹中执行,, ***是包的名字,

2.3.1:查看macho文件

otool -l ***

2.3.2:管道输出 macho文件

otool -l *** > ~/Desktop/123.txt

cryptid:

0:代表没有加密

非0:代表加密,加密的方式

2.3.3:通过管道符 筛选

otool -l *** | grep crypt

3: 手动重新签名

3.1:把plugins插件删除,把watch删除

3.2:对framework 签名

codesign -fs "iPhone Developer: Jiaqi Wang (ML39CFE2C8)" ***.frmework

FMDB.framework: replacing existing signature  重新签名成功

3.3:描述文件

1:把描述文件拷贝到***.app中

2:.plist把bundleid修改

3:用权限文件给app签名

codesign -fs "iPhone Developer: Jiaqi Wang (ML39CFE2C8)" —no-strict —entitlements=entitlements.plist ***.app

4:对app进行打包

Zip -ry ***.ipa payload

5:  信任描述文件(可以用xcode替换)

4:使用Xcode进行签名(OK)

4.1:删除插件,watch文件夹

4.2:修改bundleid,plist文件中的

4.3:对framework进行签名

4.4:  用Xcode对entiltlement安装,对app包签名,

5:shell脚本执行文件

5.1:zsh 123.sh

5.2:  bash 123.sh

5.3:  source 123.sh   影响当前的环境,

5.4:  ./ 123.sh

注意:查看shells命令,得到mac电脑的命令

cd /private/etc

open .

cat shells

三:用户、组、权限、文件

linux unix windows  Macos

多任务、多用户

1:文件组合权限

2:修改权限  写比较严格

四:脚本签名

# ${SRCROOT} 它是工程文件所在的目录

TEMP_PATH="${SRCROOT}/Temp"#资源文件夹,我们提前在工程目录下新建一个APP文件夹,里面放ipa包

ASSETS_PATH="${SRCROOT}/APP"#目标ipa包路径

TARGET_IPA_PATH="${ASSETS_PATH}/*.ipa"#清空Temp文件夹

rm-rf "${SRCROOT}/Temp"mkdir-p "${SRCROOT}/Temp"#----------------------------------------#1. 解压IPA到Temp下

unzip-oqq "$TARGET_IPA_PATH" -d "$TEMP_PATH"# 拿到解压的临时的APP的路径

TEMP_APP_PATH=$(set -- "$TEMP_PATH/Payload/"*.app;echo "$1")

# echo"路径是:$TEMP_APP_PATH"#----------------------------------------#2. 将解压出来的.app拷贝进入工程下

# BUILT_PRODUCTS_DIR 工程生成的APP包的路径

# TARGET_NAME target名称

TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"echo"app路径:$TARGET_APP_PATH"rm-rf "$TARGET_APP_PATH"mkdir-p "$TARGET_APP_PATH"cp-rf "$TEMP_APP_PATH/" "$TARGET_APP_PATH"#----------------------------------------#3. 删除extension和WatchAPP.个人证书没法签名Extention

rm-rf "$TARGET_APP_PATH/PlugIns"rm-rf "$TARGET_APP_PATH/Watch"#----------------------------------------#4. 更新info.plist文件 CFBundleIdentifier

# 设置:"Set : KEY Value" "目标文件路径"

/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/Info.plist"#----------------------------------------#5. 给MachO文件上执行权限

# 拿到MachO文件的路径

APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/Info.plist|grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\

#上可执行权限

chmod+x "$TARGET_APP_PATH/$APP_BINARY"#----------------------------------------#6. 重签名第三方 FrameWorks

TARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks"

if [ -d "$TARGET_APP_FRAMEWORKS_PATH"];

thenfor FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"*

do#签名/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"done

fi

View Code

1:创建一个项目

2:创建一个runscript,

添加命令

${SRCROOT}/signApp.sh

3:添加命令行代码于(signApp.sh)

注意

1、申请开发者证书:

将原来快要过期或者已经过期的测试证书、发布证书、Provision Profile文件等跟该AppID相关的证书和PP文件revoke,即删除掉。

注:删除证书和描述文件对已经上线的app没有影响。

2:别的电脑使用证书:

经过签名的的证书(Certificates)需要在别的电脑上使用的时候,需要将p12(私钥-申请证书的电脑)文件和证书一起传到别的电脑使用,这个时候就需要导出p12文件

引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值