復習
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>
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" ]; then for FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"* do #簽名 /usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK" done fi
1:創建一個項目
2:創建一個runscript,
添加命令
${SRCROOT}/signApp.sh
3:添加命令行代碼於(signApp.sh)
注意
1、申請開發者證書:
將原來快要過期或者已經過期的測試證書、發布證書、Provision Profile文件等跟該AppID相關的證書和PP文件revoke,即刪除掉。
注:刪除證書和描述文件對已經上線的app沒有影響。
2:別的電腦使用證書:
經過簽名的的證書(Certificates)需要在別的電腦上使用的時候,需要將p12(私鑰-申請證書的電腦)文件和證書一起傳到別的電腦使用,這個時候就需要導出p12文件
引用