二進制框架的簽名驗證是 Xcode 15 中的一項新功能,它根據SDK 作者完成的代碼簽名為****應用程序開發人員提供安全性。
應用程序開發人員必須了解的知識
Xcode 15 會自動驗證您的應用程序的依賴關系,并在檢測到問題時向您發出警報,從而保護您的供應鏈完整性。
Xcode 現在在檢查器中顯示一個新部分,其中顯示您在應用程序中包含的 xcframeworks 的簽名狀態。
此部分包含有關簽名的信息,例如作者的身份。它將顯示 xcframework 是否由以下人員簽名
- Apple 開發者計劃身份
- 自簽名證書或
- 目前尚未簽署
Xcode 將在您第一次使用 xcframework 時記錄身份,并驗證它在以后的構建過程中不會更改。
如果簽名發生更改,您的應用程序的構建將失敗并顯示相應的錯誤消息。
選擇錯誤會提供一條警報,解釋開發人員的身份已更改,并顯示預期身份與新版本中存在的身份的比較情況。
這一變化可能表明二進制框架已被破壞。這種改變可能是合法的。如有必要,請通過經過驗證的公共渠道聯系 SDK 作者進行澄清。
如果您不確定,請取消。這會將新版本移至 Xcode 中的垃圾箱。
SDK 作者必須了解的知識
強烈鼓勵 SDK 作者簽署他們的 XCFrameworks,但不強制這樣做。
對于 SDK 作者來說,對 SDK 進行加密簽名非常重要,因為它允許應用程序開發人員確認身份并保證代碼在簽名后不會被更改或篡改。
鼓勵 SDK 作者使用其 Apple 開發者計劃身份進行簽名。對于不同的開發人員身份,Xcode 根據對簽名所用身份的信任度提供不同級別的功能。
[圖片上傳失敗...(image-2f1b07-1711698469074)]
使用該codesign
工具對您的二進制框架進行簽名。下面的示例使用 Apple 開發者計劃身份。
codesign --timestamp -v --sign "Apple Distribution: Truck to Table (UA527FUGW7)" BirdFeeder.xcframework
包含時間戳標志是為了確保簽名包含 Apple 證明的安全時間戳。
簽名位于_CodeSignature
XCFramework 的目錄中,并保護最終二進制框架內所有文件的完整性。
SDK 作者負責與其 SDK 客戶端共享此證書的指紋,以便應用程序開發人員可以驗證 xcframework 是否由 SDK 作者簽名。
- 查看簽名
security find-identity -v
- 重新簽名
對于已經簽名過的framework,可以使用-f
參數強制重新簽名,用新的簽名覆蓋掉以前的簽名
codesign -f -s "證書名稱" /path/to/your.framework
- 移除簽名
codesign --remove-signature YourFramework.framework
- 驗證簽名
codesign --verify --verbose YourFramework.framework