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

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


咨詢
建站咨詢
