新聞中心
概覽
公證讓用戶可以更加放心,確信你分發(fā)的且用 Developer ID 簽名的軟件已通過 Apple 的惡意組件檢查。公證并不是 App Review 審核。Apple 公證服務(wù)是一個自動化系統(tǒng),它會掃描你的軟件中有沒有惡意內(nèi)容,檢查有沒有代碼簽名問題,并將結(jié)果迅速返回給你。如果沒有問題,公證服務(wù)會生成一個憑證,供你附加到你的軟件上;公證服務(wù)還會將該憑證發(fā)布到網(wǎng)上,讓“門禁”能夠找到它。

當(dāng)用戶首次安裝或運行你的軟件時,“門禁”通過該憑證 (不論是網(wǎng)上還是附加于可執(zhí)行文件) 可確保該軟件已經(jīng)過 Apple 公證。然后,“門禁”會在初始啟動對話框中置入描述信息,讓用戶能明智地決定是否啟動相應(yīng)的 App。
你可以為多種不同類型的軟件交付內(nèi)容進行公證,包括:
-
macOS App
-
非 App 套裝,如內(nèi)核擴展
-
磁盤映像 (UDIF 格式)
-
扁平化安裝器軟件包
萬一你的 Developer ID 簽名密鑰遭到泄露,公證也能保護你的用戶。公證服務(wù)會為使用你的簽名密鑰分發(fā)的軟件維護一個審查記錄。如果你發(fā)現(xiàn)自己軟件的未授權(quán)版本,則可以與 Apple 合作來撤銷與那些版本關(guān)聯(lián)的憑證。
重要信息
自 macOS 10.14.5 開始,用新 Developer ID 證書簽名的軟件以及所有新的或更新的內(nèi)核擴展都必須經(jīng)過公證才能運行。自 macOS 10.15 開始,所有在 2019 年 6 月 1 日后構(gòu)建并使用 Developer ID 分發(fā)的軟件都必須經(jīng)過公證。不過,通過 Mac App Store 分發(fā)的軟件不需要進行公證,因為 App Store 提交流程中已包含同等的安全性檢查。
準備公證你的軟件
公證要求使用 Xcode 10 或更高版本。構(gòu)建需進行公證的新 App 需要使用 macOS 10.13.6 或更高版本。為 App 附加憑證需要 macOS 10.12 或更高版本。
Apple 的公證服務(wù)要求你采用以下保護:
-
為你分發(fā)的所有可執(zhí)行文件啟用代碼簽名,并確保可執(zhí)行文件中包含有效的代碼簽名,具體如“確保有效的代碼簽名 (英文)”中所述。
-
使用“Developer ID”app、內(nèi)核擴展、系統(tǒng)擴展或安裝器證書來為你的代碼簽名。(不要使用 Mac 分發(fā)、Ad Hoc、Apple Developer 或本地開發(fā)證書。)在提交前驗證證書類型,具體如“使用有效的 Developer ID 證書 (英文)”中所述。有關(guān)更多信息,請參閱“創(chuàng)建、導(dǎo)出和刪除簽名證書”。
-
為你的 App 和命令行目標(biāo)啟用強化版運行時功能,具體如“啟用強化版運行時”中所述。
-
在代碼簽名中附上安全時間戳。(Xcode 分發(fā)工作流程中默認包含安全時間戳。對于自定工作流程,請參閱“附上安全時間戳 (英文)”。)
-
不要包含值設(shè)為
true 的任何變化形式的 com.apple.security.get-task-allow授權(quán)。如果你的軟件托管有第三方插件,并且需要此授權(quán)來在主機可執(zhí)行文件環(huán)境中調(diào)試插件,請參閱“避免 Get-Task-Allow 授權(quán) (英文)”。 -
針對 macOS 10.9 或更高版本的 SDK 進行鏈接,具體如“使用 macOS 10.9 SDK 或更高版本 (英文)”中所述。
-
確保你的流程使用正確格式化的 XML 和 ASCII 編碼的授權(quán),具體如“確保正確格式化的授權(quán) (英文)”。
Apple 建議你對分發(fā)的所有軟件進行公證,包括舊發(fā)行版本,甚至是不滿足所有這些要求或沒有簽名的軟件。Apple 的公證服務(wù)利用各種各樣的方法 (包括遙測) 來確定上述規(guī)則中有哪些可以對既有軟件放寬要求。有關(guān)更多信息,請參閱“對你的既有軟件進行公證 (英文)”。
重要信息
一些既有軟件可能在成功完成公證后無法正確運行。例如,“門禁”可能發(fā)現(xiàn)放寬要求的公證流程未能強制執(zhí)行的代碼簽名問題。務(wù)必要查看公證日志中有沒有任何警告,并在分發(fā)前測試你的軟件。
對插件進行公證
在 macOS 10.15 及更高版本中,App 可以載入隔離的插件 (從互聯(lián)網(wǎng)下載或通過“隔空投送”傳輸),但前提是這些插件要經(jīng)過公證。如果插件未經(jīng)公證,用戶必須通過打開“系統(tǒng)偏好設(shè)置”app,并找到“安全與隱私”中的“通用”標(biāo)簽頁來明確批準插件。
添加插件所需的授權(quán)
當(dāng)你根據(jù)公證要求啟用強化版運行時實施的額外安全性時,這會同時影響你的 App 本身和 App 托管的任何插件。插件不會自己聲明授權(quán),而是會繼承主機進程的授權(quán)。因此,主機 App 必須包含預(yù)期插件需要的所有授權(quán),即使這些插件已經(jīng)另外經(jīng)過公證也是如此。
例如,如果插件通過 C 函數(shù)指針覆蓋實施與主機可執(zhí)行文件的深度集成,或者將 JavaScript 引擎用于自定工作流程,那么主機可執(zhí)行文件必須分別聲明 Allow Unsigned Executable Memory Entitlement (英文) 或 Allow Execution of JIT-compiled Code Entitlement (英文)。在一些情形中,如果主機可執(zhí)行文件缺少適當(dāng)?shù)氖跈?quán),插件甚至無法載入。
另外,也請附上資源訪問授權(quán) (如地址簿或位置訪問授權(quán)) 和相關(guān)的用途字符串,以支持 App 的插件。例如,如果提供傳真服務(wù)的打印對話框擴展 (PDE) 想要訪問用戶的聯(lián)系人列表,主機可執(zhí)行文件必須聲明 Address Book Entitlement (英文) 并在其信息屬性列表 (英文) 中為要運行的插件附上 NSContactsUsageDescription (英文) 用途字符串。
如需強化版運行時授權(quán)的完整列表,請參閱“強化版運行時 (英文)”。有關(guān)用途字符串的信息,請參閱“請求訪問受保護的資源 (英文)”。
重要信息
在 macOS 10.14.x 中,對于使用強化版運行時的可執(zhí)行文件,只有當(dāng)主機可執(zhí)行文件具有 Disable Library Validation Entitlement (英文) 時,PDE 才會載入。自 macOS 10.15 起,將不再需要這項授權(quán)。
在分發(fā)流程中自動公證你的 App
在將你的 App 直接分發(fā)給客戶前,你的賬戶持有人必須使用你的 Developer ID 為 App 簽名。Xcode 的 Organizer 窗口包含用于生成 App 可分發(fā)版本的工作流程。在 Xcode 10 及更高版本中,這個工作流程包含一個用于自動公證 macOS App 的選項。要使用這個工作流程對你的 App 進行公證,請進行以下操作:
-
打開你的 Xcode 項目。
-
為你的 App 創(chuàng)建歸檔。
-
打開 Xcode 的 Organizer 窗口。
-
在“Archives”(歸檔) 標(biāo)簽頁中,選擇你創(chuàng)建的歸檔。
-
點按“Distribute App”(分發(fā) App),以查看分發(fā)選項。
-
選取適用于你的分發(fā)方法的 Developer ID。
-
點按“Next”(下一步)。
-
選取“Upload”(上傳),將你的歸檔發(fā)送到 Apple 公證服務(wù)。
-
點按“Next”(下一步)。
點按“Next”(下一步) 時,Xcode 會將你的歸檔上傳到公證服務(wù)。上傳完成時,公證服務(wù)會開始掃描流程,用時通常不到一小時。在公證服務(wù)掃描你的軟件期間,你可以繼續(xù)對歸檔進行分發(fā)準備。例如,你可以導(dǎo)出歸檔,并完成在將軟件提供給客戶前需要進行的最終測試。
當(dāng)公證流程結(jié)束時,Xcode 會下載憑證并附加到你的歸檔。這時,再次導(dǎo)出你的歸檔,就能獲得含有公證憑證的可分發(fā)版軟件。有關(guān)如何使用 Xcode UI 上傳軟件的更多信息,請參閱“上傳 macOS App 進行公證”。
對于 macOS App 以外的目標(biāo),可使用 altool 命令行實用程序來公證,具體如“自定公證工作流程 (英文)”中所述。
對既有軟件進行公證
在你對既有軟件進行公證后,“門禁”會在用戶嘗試運行該軟件時提醒用戶。它也有助于公證服務(wù)將你的合法軟件和遭到篡改的變體區(qū)分開來。你可以對現(xiàn)有的磁盤映像、安裝器軟件包或含有你的 App 的 ZIP 歸檔進行公證。
要對你的既有軟件進行公證,請進行以下操作:
-
使 Xcode 10 成為你的活躍 Xcode 安裝。(如果你不確定 Xcode 10 是不是活躍的安裝,請使用
xcode-select命令行使它處于活躍狀態(tài)。有關(guān)如何使用此工具的信息,請參閱對應(yīng)的手冊頁,具體如“閱讀 UNIX 手冊頁 (英文)”中所述。) -
將你的軟件上傳到 Apple 公證服務(wù),具體如“將你的 App 上傳到公證服務(wù) (英文)”中所述。
-
將返回的憑證附加到你的現(xiàn)有軟件,具體如“將憑證附加到你的分發(fā) (英文)”中所述。
注釋
在提交軟件進行公證前,你不需要重新構(gòu)建或重新簽名,但必須使用 Xcode 10 來完成公證步驟。提交你之前發(fā)布的所有版本,以及你最近的版本,以便保護繼續(xù)使用你舊版軟件的用戶。
如需關(guān)于如何解決公證期間可能出現(xiàn)的問題的提示,請參閱“解決常見的公證問題 (英文)”。
在你的構(gòu)建腳本中添加公證步驟
如果你使用自動化構(gòu)建系統(tǒng),可以將公證流程整合到現(xiàn)有的構(gòu)建腳本中。通過 altool 和 stapler 命令行工具 (Xcode 已隨附),你可以將軟件上傳到 Apple 公證服務(wù),并將生成的憑證附加到你的可執(zhí)行文件。
有關(guān)如何將公證整合到自定構(gòu)建腳本的信息,請參閱“自定公證工作流程 (英文)”。
分享文章:創(chuàng)新互聯(lián)IOS教程:在分發(fā)前對macOS軟件進行公證
本文地址:http://m.fisionsoft.com.cn/article/coopoch.html


咨詢
建站咨詢
