app重簽名
1.查看包信息
codesign -d -vvv demo.app
查詢結(jié)果如下
Executable=/Users/xxxxxxx/Desktopxxxxxxxxxxxxxxxx/airhost
Identifier=us.zoom.airhost
Format=app bundle with Mach-O universal (x86_64 arm64)
CodeDirectory v=20500 size=65627 flags=0x10000(runtime) hashes=2042+5 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha1=f4aaeaacbdb374cd6bad1d295fac898865a4373c
CandidateCDHashFull sha1=f4aaeaacbdb374cd6bad1d295fac898865a4373c
CandidateCDHash sha256=657a8011195e64a3d619bf3f39dc013da6006c5d
CandidateCDHashFull sha256=657a8011195e64a3d619bf3f39dc013da6006c5deb4df20043de8355a4a628c1
Hash choices=sha1,sha256
CMSDigest=5c8ae9046f896efae0bb766bd5a051a754d7b73d8e5060aff1b95ec74eb317dc
CMSDigestType=2
CDHash=657a8011195e64a3d619bf3f39dc013da6006c5d
Signature size=9081
Authority=Developer ID Application: xxxx Communications, Inc. (xxxxxxxx)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Mar 31, 2021 at 10:17:08 AM
Info.plist entries=24
TeamIdentifier=BJ4HAAB9B3
Runtime Version=10.14.0
Sealed Resources version=2 rules=13 files=19
Internal requirements count=1 size=176
重點(diǎn)看其中幾點(diǎn)
Authority=Developer ID Application: xxx Communications, Inc. (xxxxxxx)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Mar 31, 2021 at 10:17:08 AM
Info.plist entries=24
TeamIdentifier=xxxxx
2.查看包中的 entitlement
codesign -d —-entitlements - demo.app
3.簽名
codesign --force --entitlements caphost.entitlements --options runtime --sign "Developer ID Application: xxxxx Co., Ltd. (xxxxxx)" ZoomSDK/caphost.app
--force
本身已經(jīng)簽名适肠,這里強(qiáng)制重簽名搏嗡;
--options runtime
因?yàn)橐C,所以也需要把a(bǔ)pp設(shè)置成強(qiáng)制運(yùn)行時(shí)比然,這里注意囤攀,設(shè)置強(qiáng)制運(yùn)行時(shí)會(huì)使之前的獲取權(quán)限設(shè)置清空软免,所以需要用entitlements來設(shè)置;
--entitlements
因?yàn)閍pp可能會(huì)用到某些權(quán)限焚挠,這里需要根據(jù)第二步獲取到的entitlement創(chuàng)建文件膏萧;
--sign
簽名,后面寫簽名證書的名字蝌衔;
如果app內(nèi)部包含framework榛泛,需要對(duì)framework的dylib文件也進(jìn)行簽名;
app公證-使用Xcode公證
1噩斟、使用 Developer ID 簽名你的應(yīng)用
關(guān)于證書曹锨,可參考:https://blog.csdn.net/lovechris00/article/details/84848734
2、Enable hardened runtime
The hardened runtime :強(qiáng)化版運(yùn)行時(shí)
設(shè)置需要以下條件:macOS 10.13.6 及以上剃允, Xcode 10 及以上沛简;
測(cè)試則必須在 10.14 及以上版本。
工程 – target – Capabilities – Hardened Runtime
勾選需要的Access 后硅急,access 將會(huì)聲稱在 entitlements 中覆享。
3、entitlement 添加 com.apple.security.get-task-allow
entitlement.plist 中添加 com.apple.security.get-task-allow 這個(gè)鍵营袜,設(shè)置為 YES
注意:這里選擇了強(qiáng)化版運(yùn)行時(shí),獲取權(quán)限會(huì)發(fā)生變化丑罪,需要在下面把權(quán)限勾上荚板,不然獲取權(quán)限的時(shí)候會(huì)崩潰;
4吩屹、Archive
Distribute App —> Developper ID —> Upload —> Review —> Loading跪另;
公證成功
上面的頁面不要關(guān)閉,公證成功后會(huì)給xcode發(fā)通知煤搜。一般幾分鐘就可以免绿;
點(diǎn)擊export可以導(dǎo)出公證成功的app文件;
打包pkg和簽名
1.打包pkg
2.獲取 installer 證書名字
終端輸入
security find-identity -v
可以得到如下類型的數(shù)據(jù):
1) 1236AFAC91EB45EC745037C6720F851C67E "Mac Developer: ss (612SD557MK)"
2) BCDBBCDB4BB8A048092FFFB813C45571273EC2AA "iPhone Developer: ss (3213CE4L5)"
3) 12345BDC1845B3E8E9E8EFEE61221BEBDAA75E "Mac Developer: ss (3U6SDA6DL5)"
4) FBFSDF8FE507B8D9FDA6FDSDADA786A3 "Developer ID Installer: ss (DSA34QV93)"
找到帶 installer 的那條數(shù)據(jù)擦盾,并將雙引號(hào)及內(nèi)容一起復(fù)制
3.簽名
腳本
#先cd到 pkg文件的同一目錄下嘲驾;
#pkg簽名
productsign --sign "Developer ID Installer: xxx Co., Ltd. (xxx)" xxx.pkg xxxsigned.pkg
#xxxsigned.pkg為簽名后的pkg文件淌哟,要拿這個(gè)文件去公證,而不是你原來的pkg
#公證
xcrun altool --notarize-app --primary-bundle-id "com.xxxx.xxxx" --username "xxx@xxxxx" --password "xxxx-xxxx-xxxx-xxxx" --file xxxsigned.pkg
#password 要從apple官網(wǎng)中獲取辽故,文章底部有鏈接
#查看公證
xcrun altool --notarization-info 54b88d61-4858-48e4-a9be-7b272577abf3 --username "xxx@xxxx" --password "xxxx-xxxx-xxxx-xxxx"
#54b88d61-4858-48e4-a9be-7b272577abf3 這個(gè)是請(qǐng)求id徒仓,上一條指令成功后,會(huì)在控制臺(tái)打印出來誊垢,然后替換掉弛;
#給包訂上公證票據(jù)
xcrun stapler staple -v xxxsigned.pkg
#驗(yàn)證pkg
spctl -a -v --type install ./xxxsigned.pkg
#結(jié)果
#公證后的
/xxx/abc.pkg: accepted
source=Notarized Developer ID
#沒公證的
/xxx/abc.pkg: rejected
source=Unnotarized Developer ID
密碼獲取:管理您的 Apple ID
參考 macOS 開發(fā) - Notarization 公證你的 Developer ID 應(yīng)用_伊織的筆記本-CSDN博客