基於notarytool對MacOS應用進行公證

轉載來自https://taoofcoding.tech/blogs/2022-11-13/use-notarytool-to-notary-macos-app

官方文檔

這個大哥寫的很好,具體可以參考他  我是個搬運工

altool has been deprecated and, starting in fall 2023, will no longer be supported by the Apple notary service. You should start using notarytool to notarize your software

根據提示,顯示現在使用的altool公證方式將在2023年過期,無法再使用。 現在都是新方式

什麼是公證

 

在進行詳細的說明之前,需要解釋一下什麼叫公證,公證這個概念在Windows以及MacOS上都存在.

公證的本質目的是:向下載及使用你應用的人證明你的應用的可信任性

也就是,公證的應用是可以信任的,不會是一些破解或木馬應用等.

以MacOS來說,有兩種方式發佈應用.一種是上架到AppStore,讓用戶在AppStore搜索及下載應用;還有一種是發佈獨立的DMG格式的安裝文件,讓用戶下載DMG進行安裝.

對於發佈獨立的DMG格式的場景下,最好對應用進行公證,否則用戶安裝未公證的DMG應用時,MacOS會提示已損壞,無法打開。 您應該將它移到廢紙簍,用戶需要在安全設置中主動信任這個應用,才能正常使用這個應用.

很多人下載過MacOS的盜版或破解應用,相信對這個提示或如何解決這個問題比較熟悉了.

 

MacOS公證的前提

做爲一個MacOS應用的開發者,能夠對MacOS進行公證的前提是:

  • 需要一個Apple開發者帳號(個人或公司都可以)
  • 安裝Xcode 13及後續的相關版本

其實,做爲一個iOS或MacOS的開發人員,註冊一個Apple開發者身份必不可少,否則很多事情難以完成,一個Apple開發者的費用是每年99美元 (約699元/年)

新的公證流程

  1. 存儲必要的憑證

因爲公證是在命令行模式下進行,爲了安全起見,將後續公證過程中涉及到的認證密碼存儲到keychain中

xcrun notarytool store-credentials "MY_PASSWORD" \
               --apple-id "{appId}"  \
               --team-id PNJFUFSV5K  \
               --password {二次認證密鑰}
  • MY_PASSWORD是憑證名稱,可隨意命名,後續需要使用到
  • --apple-id:你註冊的Apple開發者帳號
  • --team-id: teamId的值,無論是個人或公司開發者帳號,都會有一個這樣的值   就是那個證書最後面的那串字符串
  • --password: 二次憑證,在AppleId中設置的二次認證密碼,以避免直接使用AppleId的密碼,加強安全性 這個是從

     

  • https://appleid.apple.com/ 這邊去

  •  

    這邊生成 

  1. 提交公證申請
xcrun notarytool submit {appPath} \
                   --keychain-profile "MY_PASSWORD" \
  • appPath: 需要公證的安裝包的完整路徑
  • --keychain-profile: 先前存儲的憑證名稱

過程中,會要求輸入當前系統用戶的密碼,以讀取上一步設置的MY_PASSWORD的憑證

此命令執行完成後,會輸出類似如下信息

Successfully uploaded file. 
 id: 2efe2717-52ef-43a5-96dc-0797e4ca1041
 path: /Users/lingen/Desktop/微言碼道_0.1.dmg

這意味着你的安裝包已經上傳完成了,併成功發送了公證申請.

  1. 查詢公證進度

公證需要一定的時間,可隨時查詢公證進度 (正常情況下,一般30分鐘左右)

xcrun notarytool info {id} --keychain-profile "MY_PASSWORD"
  • {id}: 上一步生成的id值
  • --keychain-profile: 公證憑證

查詢成功後,可查詢到如下信息

Successfully received submission info
  createdDate: 2022-09-19T06:29:28.611Z
  id: d6b8ad29-8517-44f6-8392-5b6a6e40b876
  name: 微言碼道_0.1.dmg
  status: Accepted
  1. 將公證信息注入到安裝包中
xcrun stapler staple {appPath}

公證成功後,將公證信息注入到你的安裝包中

  1. 驗證DMG是否已公證
xcrun stapler staple -v /Users/lingen/Desktop/微言碼道_0.1.dmg

正常情況下,會輸出***The staple and validate action worked!***的字樣.

大功告成

提示注入成功後,你的安裝包就可以在互聯網上傳播,下載以及安裝是不會提示危險軟件了。

更重要的一點是,公證是MacOS應用能自動下載並安裝新版本的前提,沒有公證的更新包,是無法實現自動更新這個功能的.

所以,如果你開發了MacOS應用,又沒有走AppStore渠道,公證是你一定要去做的.

需要知道的是,MacOS的公證並不涉及人工審覈,是一個自動化的流程,基本上只要你有Apple開發帳號,打的包又是按照蘋果規範來的,就不存在公證被否的可能性.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章