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文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>AppIDName</key>
    <string>CreditDis</string>
    <key>ApplicationIdentifierPrefix</key>
    <array>
    <string>5876MU3PLA</string>
    </array>
    <key>CreationDate</key>
    <date>2019-10-29T00:46:09Z</date>
    <key>Platform</key>
    <array>
        <string>iOS</string>
    </array>
    <key>IsXcodeManaged</key>
    <false/>
    <key>DeveloperCertificates</key>
    <array>
        <data>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==</data>
        <data>MIIF0TCCBLmgAwIBAgIIPbTqTqhHMtowDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTkxMDIyMTAwMTI0WhcNMjAxMDIxMTAwMTI0WjCBrzEaMBgGCgmSJomT8ixkAQEMCkNMM0hLQzlFWjcxMzAxBgNVBAMMKkFwcGxlIERldmVsb3BtZW50OiBKaWFxaSBXYW5nIChNTDM5Q0ZFMkM4KTETMBEGA1UECwwKNTg3Nk1VM1BMQTE6MDgGA1UECgwxQ2hpbmEgRXZlcmJyaWdodCBCYW5rIENPLiwgTFREIENyZWRpdCBDYXJkIENlbnRlcjELMAkGA1UEBhMCQ04wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9WeFXa1mbYkok/jL4XAiGsUYepwBM05A93fjyMjnsBtoTGVP9msBqcvU3BqassGDL7QDbjpBEEwoyWu1zdjydk/9Oilq4K2OUj7QycnFvTMMSANykiXxnfhklLYR08SBSSPxiok2GYjExKAIvO6KBs5zD8+Ue6h4uFjoYnEJkDs/pEh+ct5wziMxZOasQzC2IT5oYONLV3ullLEubLJPA2xO+u6UT4rXO7uwI1u+Dgp66ncc2kGy6htr1bCTC2ZQf8AblV7ZfRoSE8u9hrWVewUa3OnRBABY8QKv5MxU/wiD/ZjbMw5ytwH1z3ZEWKjNysD4+GUA1DpZrXL7pAYgTAgMBAAGjggIGMIICAjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFIgnFwmpthhgi+zruvZHWcVSVKO3MD8GCCsGAQUFBwEBBDMwMTAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuYXBwbGUuY29tL29jc3AwMy13d2RyMTkwggEdBgNVHSAEggEUMIIBEDCCAQwGCSqGSIb3Y2QFATCB/jCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjA2BggrBgEFBQcCARYqaHR0cDovL3d3dy5hcHBsZS5jb20vY2VydGlmaWNhdGVhdXRob3JpdHkvMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBSaMksdtRL9MywGxvqGB8uqcU6EFTAOBgNVHQ8BAf8EBAMCB4AwEwYKKoZIhvdjZAYBAgEB/wQCBQAwEwYKKoZIhvdjZAYBDAEB/wQCBQAwDQYJKoZIhvcNAQELBQADggEBAD/HiK9wAlfSt5aJQuT8XyzcpqTdkHlJjxGegPE+thaHsRNqP38Q4N15iFEHl5sFzdRnc4yaTkT9YyZZpCwxpbnQfpHxsWlUQFmtcyDdtvu3XJpb6xcmzirSYmBhXAzwC7SmcohqAGqcI8p4c+b0QlI523Yzk8W2Mqi73p4hBDt6kHAWq1h73/Uc1msU9989B6Bwzifq6BYKHHHhZpPqUDYhtOIZpEQiCveSll9EguKoIPOiYpxlMT4/DVXNOytHVvSz+JiSzWD3xuygSblWKVRrMEo6khTTkvvI2jDk1wzxgAL4fKZqES5ezzgssYiP4oIL/wSaBrj7zIq0XqSDnKc=</data>
    </array>

                                        
    <key>Entitlements</key>
    <dict>
                
                <key>application-identifier</key>
        <string>5876MU3PLA.com.cebbank.xyk</string>
                
                <key>keychain-access-groups</key>
        <array>
                <string>5876MU3PLA.*</string>
        </array>
                
                <key>get-task-allow</key>
        <true/>
                
                <key>com.apple.developer.team-identifier</key>
        <string>5876MU3PLA</string>
                
                <key>aps-environment</key>
        <string>development</string>

    </dict>
    <key>ExpirationDate</key>
    <date>2020-10-28T00:46:09Z</date>
    <key>Name</key>
    <string>yghsh_dev_20191029</string>
    <key>ProvisionedDevices</key>
    <array>
        <string>5257bcb8938e4e6dbbe908622450918a5bdc61f9</string>
        <string>25ca953841c6c3f97e1d916f44f76d796fa058a9</string>
        <string>7e0da1c205d9a58c868266d99f2c8a17d4f65642</string>
        <string>43e3673c83a1056d1463f7e902ecaded99c0e8db</string>
        <string>e7447c0751a0ef7c8c84f7e72c0967fc064f8b21</string>
        <string>76593166cd370a9e975ed3005783fa3690fb97eb</string>
        <string>976dd4e3ec1931ca0d486fbf2dc6820bd369e891</string>
        <string>bba882d248f21a6df38604b89122e63aa0bb2a0b</string>
        <string>ec54ec221d5a62da45052433f92a5aafbdd9fa58</string>
        <string>066eb234a8b151b0a1fa0ffec022c34665213b07</string>
        <string>fdcf5eff39336079294dc39e19249b714274c4d9</string>
        <string>0ccb4fb26f7c4dc5577dd1a4b9657390b17b0112</string>
        <string>8023c4f949eead298073482341a0df95f1b32a7e</string>
        <string>551f3b95cfed25879bce15577d29964b309a0d3d</string>
        <string>456dd8ab4e8d9810f37990275ee49b6c6395603f</string>
        <string>f8d5971a8f8cade0bb50056516d05d926665e954</string>
        <string>c2320e6c1afea74cc3299da09534430fdd43fbba</string>
        <string>14113f41ba942973e3d1febd7b0157f4d899ebd4</string>
        <string>3edd2ed0cfc37e14310b32aa28b56a511fa7b4ad</string>
        <string>40cf9e14609c8de2a4ec9911ac885490ab6f8955</string>
        <string>bf12dfaa8369720db79800dce2b0d1bdf1cea1b7</string>
        <string>23c219ec1549539885431116d114ed69a366efb9</string>
        <string>4eec9a9c4a326e13e88e5c2af8ecf8202aa317ee</string>
        <string>5329d4406834956dceb7ebd86f4fc317a695f730</string>
        <string>ae2417fd5ff7713a032990e941d9e0c7aa95a149</string>
        <string>f46cd8714b3663379a76c418f3a5b50b3caab8b7</string>
        <string>3dcdc6a109f754773703d2d7d85ee00d7a3ef56a</string>
        <string>9250f2f39cc7da26fd8ec65ee910ca9c0f907514</string>
        <string>6bbad9e1591205d92a8620c58208dbc5839ccf18</string>
        <string>f0a299ffdbb19f1e8ed5088f45743ee21f6c9e96</string>
        <string>458c9b1a6909245e39c9f7bcface72bb3d1d39d0</string>
        <string>44ad18e054338547898c748da0e169dc9f1c1c0f</string>
        <string>d1543a75aa8f622a0f6e09e0c52a7017627a8c03</string>
        <string>e16ef4e8b06878054584000a8b9b02df6745c3f5</string>
        <string>04d9ed9cb1eb6931305b42299b3cd54b2dc4835d</string>
        <string>5a7b9823fc4b7219343167f9aef1fefcc4668189</string>
        <string>23387ab926ec9e0e98198d015ea53a8362cfdee5</string>
        <string>6bcfeab3efaf8abf6d94faea7c087a99c92f6a16</string>
        <string>aaa1a4e15a8a4134dd14155321b8e8f02fba3ffa</string>
        <string>2a2cdb96bdd9223b88bd24f051db743f27cda082</string>
        <string>ea07b7635387b0aa91f52f25e27c91e611719c3d</string>
        <string>5c7b2d58973f22aceedfb08c815ed40171bb3a0f</string>
        <string>ab86138f55e2e7454fb60af7f9d7300d1c4aa19a</string>
        <string>9319ce7d8d7454708eaa3ec36e6e5d0f64c2d5e6</string>
        <string>e835f7ded888bdcc131b13be90898ea2552e8b0c</string>
        <string>e1ca8bfcf4f8223f901d2a53e1b16806e6219100</string>
        <string>a247c65267217583ecb3c0113eb69413bcae4061</string>
        <string>35bba4f8ca9f116b6f0ea7297a2597502606cbd9</string>
        <string>cacee5eb9ba753203b367765f73a55d0c10705b3</string>
        <string>aea988226969f7dc0ebdd2873d3a0a9870b6d2ea</string>
        <string>a602fbd7d3adc4a3ba90b95936f350f1850ca748</string>
        <string>ac83a77644b7c5d5c3ce78256a5b13f84bb47ef2</string>
        <string>86a95f3b4dbf8339b3a2c5441680adc1a7e91371</string>
        <string>853d41c50b39c3bddff96347ca4d04664601e24f</string>
        <string>0ee2ac1da3ebe717a4aad48eda94ee7bd1895325</string>
        <string>1a719ca3a81c8c06e87738c525cb2362897d1aef</string>
        <string>5281a7049193939a001cb4d4d322cd0d090e8389</string>
        <string>41afb7542e698deccca1a8c133c60f2bf6e926b6</string>
        <string>6904333738e8343b7c00a381ed3483d65797340b</string>
        <string>98d6368b6c261914759ccea78c618cb1bbb090fb</string>
        <string>00008020-001920582130003A</string>
        <string>6ccc35714ae1ef652b3dfd9b2208665b746c1d37</string>
        <string>4ba06a53801cf244b0f02be3cdb5e9bd3ea5182d</string>
        <string>98969ca6f2b59853f64ac06caf8690f5da07067b</string>
        <string>00008020-001C646834D8002E</string>
        <string>00008020-000838110E82002E</string>
        <string>0694b66582a715f2b86a8e406c5a331dadecbe17</string>
        <string>1f6a4788b00d9689fb6d3cd4412ddfd746b588c3</string>
        <string>ec07b36ad5e1d92aa1b9bc091a17bd1587fec877</string>
        <string>ddd1ae9addf883966df082eecc00babdd1119389</string>
        <string>fa43b4b1b37bcb37b6b9f25bf12818b182337a72</string>
        <string>1f81b591571baf2777049eacd419477553500520</string>
        <string>00008020-000E19620A38002E</string>
        <string>00008020-001A54640CF8002E</string>
        <string>00008020-001A54C80E52002E</string>
        <string>e99c115fbc62fc087b5d1da9c05734a3686858eb</string>
        <string>e864964d45d686fecd93379fee8aefe18ccd561e</string>
        <string>d18613efb0b8aa36863c8702229184c374515204</string>
    </array>
    <key>TeamIdentifier</key>
    <array>
        <string>5876MU3PLA</string>
    </array>
    <key>TeamName</key>
    <string>China Everbright Bank CO., LTD Credit Card Center</string>
    <key>TimeToLive</key>
    <integer>365</integer>
    <key>UUID</key>
    <string>3c4c436e-1320-41b4-819c-7bf90d0c38b8</string>
    <key>Version</key>
    <integer>1</integer>
</dict>
</plist>
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

iTurns12.6.3版本。

2:   查看签名和证书

2.1:  查看签名信息  Xcodecodesign签名 

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" ];
    then
for 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文件



引用

1:双向签名

2:开发者证书申请

3:双层签名和证书

 

posted on 2020-05-22 17:06  风zk  阅读(2149)  评论(0编辑  收藏  举报

导航