????????在MacOS 10.14.5之后,如果應用沒有在蘋果官方平臺進行公證notarization(我們可以理解為安裝包需要審核,來判斷是否存在病毒),那么就不能被安裝。當然現在很多人的解決方案都是使用sudo spctl --master-disable,取消驗證模式,但是總體給客戶培訓下來,效果非常差,很多人找不到終端,有的人甚至不能在終端中輸入命令。因此急需找到解決問題的源頭,如何進行代碼公證。
?1、簽名
在App進行公證之前,App首先必須有一個簽名,來證明這個app的開發者是誰:
首先你需要有一個蘋果開發者賬號
首先,找到開發電腦的鑰匙串
,找到證書助理
,創建一個從證書機構請求證書
:?
填寫自己的信息,并保存,生成一個CertificateSigningRequest.certSigningRequest
文件。
現在需要生成 Developer ID Application證書
登錄蘋果開發者網站:https://developer.apple.com/account/resources/certificates/add
添加 Developer ID Application類型證書:
導入上面生成的CertificateSigningRequest.certSigningRequest
文件,導入完成之后即可下載我們需要的證書了:
下載到電腦之后,雙擊一下,證書就被安裝到了鑰匙串中了。
此時,打開鑰匙串,選擇登錄
?鑰匙串,并在我的證書
欄找到剛才導入的證書:
右鍵并下載,
保存成p12
文件:
保存到你的路勁之后,此時需要配置環境變量:
export CSC_LINK=‘你的p12文件路徑'
export CSC_KEY_PASSWORD=‘你創建p12文件的密碼’
驗證:
security find-identity -v -p codesigning
2. 公證
之前使用的altool工具被蘋果打回了,現在只能使用notarytool工具打包了,具體文檔可以查看這篇文章:
https://developer.apple.com/documentation/technotes/tn3147-migrating-to-the-latest-notarization-tool 直接上命令行:
?存儲憑據
xcrun notarytool store-credentials "ac_dblens" \--apple-id "開發者@qq.com" \--team-id "證書(xxx)" \--password "xxxx"
下面來解釋一下所有參數的意義:
- your_apple_id 你的蘋果開發者賬號
- password 你的應用專屬密碼,和你的蘋果開發者賬號密碼不一樣,可以查閱相關資料設置應用專屬密碼
- team_id 你的團隊id
- ac_dblens : "隨便取,鑰匙串條目名稱"
提交公證
xcrun notarytool submit "/Users/xxxxx-0.0.7-arm64.dmg" \--keychain-profile "ac_dblens" \--wait
檢查公證狀態
提交后,如果需要檢查公證狀態,可以使用以下命令:
xcrun notarytool info <submission_id> \--keychain-profile "AC_PASSWORD"
-
<submission_id>
:提交公證時返回的 UUID。 -
"AC_PASSWORD"
:鑰匙串條目的名稱。
附加公證票據
公證成功后,將公證票據附加到 DMG 文件中:
xcrun stapler staple "/path/to/your/app.dmg"
-
/path/to/your/app.dmg
:替換為你的 DMG 文件路徑。
驗證票據:
-
xcrun stapler validate "/path/to/your/app.dmg"
附加公證票據(Staple Notarization Ticket)是 macOS 公證流程中的一個重要步驟。它的作用是將 Apple 公證服務生成的票據(Ticket)直接嵌入到應用程序或安裝包(如?.app
、.pkg
?或?.dmg
)中。這樣,即使用戶的設備無法訪問互聯網,也可以驗證軟件的真實性和安全性。
附加公證票據的作用
-
離線驗證:
-
公證票據包含了 Apple 對軟件的驗證信息。
-
附加票據后,即使用戶的設備處于離線狀態,macOS 仍然可以驗證軟件的合法性。
-
-
提高用戶體驗:
-
如果沒有附加票據,macOS 在首次運行軟件時會嘗試從 Apple 服務器下載公證信息。這可能會導致延遲或失敗(例如網絡問題)。
-
附加票據后,驗證過程會更快,用戶體驗更流暢。
-
-
增強安全性:
-
公證票據證明了軟件已經通過 Apple 的公證檢查,確保軟件沒有被篡改或包含惡意代碼。
-
附加票據后,macOS 可以更嚴格地驗證軟件的完整性。
-
-
滿足分發要求:
-
對于通過非 Mac App Store 分發的軟件(如直接下載或第三方渠道),Apple 要求軟件必須經過公證并附加票據。
-
使用?xcrun notarytool submit
?提交公證請求時,添加?--wait
?參數會讓命令等待公證完成并返回結果。等待時間通常取決于文件大小、Apple 服務器的負載以及公證隊列的長度。以下是關于等待時間的具體說明和建議:
等待時間
-
典型等待時間:
-
對于大多數小型或中型文件(如幾十 MB 到幾百 MB),公證通常在?幾分鐘到半小時?內完成。
-
對于較大的文件(如超過 1 GB),可能需要?更長時間(例如 1 小時或更久)。
-
-
影響因素:
-
文件大小:文件越大,處理時間越長。
-
服務器負載:Apple 的公證服務器負載較高時(例如新版本 Xcode 發布后),處理時間可能會延長。
-
網絡速度:上傳文件到 Apple 服務器的速度也會影響總時間。
-
-
--wait
?參數的作用:-
添加?
--wait
?參數后,命令會一直等待,直到公證完成并返回最終結果。 -
如果不添加?
--wait
,命令會立即返回提交 ID,你需要手動檢查公證狀態。
-
-
重新提交公證
如果等待時間過長(例如超過 3 小時),可以嘗試取消當前提交并重新提交:
xcrun notarytool cancel "fba3eb0c-5169-4bee-b2f4-3ba18dafb3f9" \--keychain-profile "ac_dblens"
然后重新提交:
xcrun notarytool submit "/path/to/your/xxx-arm64.dmg" \--keychain-profile "ac_dblens" \--wait
參考:Mac Electron 應用如何進行簽名(signature)和公證(notarization)?_electron mac簽名-CSDN博客