二進(jìn)制框架的簽名驗(yàn)證是 Xcode 15 中的一項(xiàng)新功能,它根據(jù)SDK 作者完成的代碼簽名為****應(yīng)用程序開發(fā)人員提供安全性。
應(yīng)用程序開發(fā)人員必須了解的知識(shí)
Xcode 15 會(huì)自動(dòng)驗(yàn)證您的應(yīng)用程序的依賴關(guān)系,并在檢測(cè)到問題時(shí)向您發(fā)出警報(bào),從而保護(hù)您的供應(yīng)鏈完整性。
Xcode 現(xiàn)在在檢查器中顯示一個(gè)新部分,其中顯示您在應(yīng)用程序中包含的 xcframeworks 的簽名狀態(tài)。
此部分包含有關(guān)簽名的信息,例如作者的身份。它將顯示 xcframework 是否由以下人員簽名
- Apple 開發(fā)者計(jì)劃身份
- 自簽名證書或
- 目前尚未簽署
Xcode 將在您第一次使用 xcframework 時(shí)記錄身份,并驗(yàn)證它在以后的構(gòu)建過程中不會(huì)更改。
如果簽名發(fā)生更改,您的應(yīng)用程序的構(gòu)建將失敗并顯示相應(yīng)的錯(cuò)誤消息。

選擇錯(cuò)誤會(huì)提供一條警報(bào),解釋開發(fā)人員的身份已更改,并顯示預(yù)期身份與新版本中存在的身份的比較情況。
這一變化可能表明二進(jìn)制框架已被破壞。這種改變可能是合法的。如有必要,請(qǐng)通過經(jīng)過驗(yàn)證的公共渠道聯(lián)系 SDK 作者進(jìn)行澄清。
如果您不確定,請(qǐng)取消。這會(huì)將新版本移至 Xcode 中的垃圾箱。

文章:驗(yàn)證 XCFrameworks 的來(lái)源
SDK 作者必須了解的知識(shí)
強(qiáng)烈鼓勵(lì) SDK 作者簽署他們的 XCFrameworks,但不強(qiáng)制這樣做。
對(duì)于 SDK 作者來(lái)說,對(duì) SDK 進(jìn)行加密簽名非常重要,因?yàn)樗试S應(yīng)用程序開發(fā)人員確認(rèn)身份并保證代碼在簽名后不會(huì)被更改或篡改。
鼓勵(lì) SDK 作者使用其 Apple 開發(fā)者計(jì)劃身份進(jìn)行簽名。對(duì)于不同的開發(fā)人員身份,Xcode 根據(jù)對(duì)簽名所用身份的信任度提供不同級(jí)別的功能。
[圖片上傳失敗...(image-2f1b07-1711698469074)]
使用該codesign工具對(duì)您的二進(jìn)制框架進(jìn)行簽名。下面的示例使用 Apple 開發(fā)者計(jì)劃身份。
codesign --timestamp -v --sign "Apple Distribution: Truck to Table (UA527FUGW7)" BirdFeeder.xcframework
包含時(shí)間戳標(biāo)志是為了確保簽名包含 Apple 證明的安全時(shí)間戳。
簽名位于_CodeSignatureXCFramework 的目錄中,并保護(hù)最終二進(jìn)制框架內(nèi)所有文件的完整性。
SDK 作者負(fù)責(zé)與其 SDK 客戶端共享此證書的指紋,以便應(yīng)用程序開發(fā)人員可以驗(yàn)證 xcframework 是否由 SDK 作者簽名。
- 查看簽名
security find-identity -v
- 重新簽名
對(duì)于已經(jīng)簽名過的framework,可以使用-f參數(shù)強(qiáng)制重新簽名,用新的簽名覆蓋掉以前的簽名
codesign -f -s "證書名稱" /path/to/your.framework
- 移除簽名
codesign --remove-signature YourFramework.framework
- 驗(yàn)證簽名
codesign --verify --verbose YourFramework.framework