動態

詳情 返回 返回

蘋果系統macOS客户端打包簽名認證 - 動態 詳情

參考文章如下:

  • 簽名:https://juejin.cn/post/7144676767603621919?searchId=202509091...
  • 公證:https://cloud.tencent.com/developer/article/2168099?from=1542...
  • 官方文檔:https://developer.apple.com/cn/developer-id/

操作步驟

  • 第一步:簽名+證書創建
  • 第二步:公證

第一步:簽名+證書創建

1. macOS打開“鑰匙串訪問” -> 左上角菜單找到“證書助理” -> 從證書頒發機構請求證書,如下圖所示:
image.png

2. 填寫證書相關信息:
第一欄填可用的電子郵箱 例如:xxx@abc.com
第二欄輸入有自己標識的名稱(方便自己後期在鑰匙串中快速辨識並找到)
第三欄不選擇(不使用CA電子郵件地址)
第四欄選擇:存儲到磁盤
image.png
第五:保存到磁盤後,名稱如下:CertificateSigningRequest.certSigningRequest

3. 打開蘋果開發者平台,上傳生成Developer ID Application證書
蘋果開發者平台地址:https://developer.apple.com/account
登錄後 -> 證書、標識符和描述文件 -> 證書 -> 添加證書 -> Software -> Developer ID Application (必須使用主賬號登錄,才可以選擇此選項)
image.png
image.png
image.png
image.png
Choose File -> 選擇本地磁盤上的 CertificateSigningRequest.certSigningRequest -> Continue
生成後,證書列表會有一條記錄,如下:
image.png

點擊記錄進去後,下載證書文件
image.png

下載後的證書如下(名稱:developerID_application.cer):
image.png

4. 生成P12 簽名文件
雙擊developerID_application.cer(下載好的證書),自動添加到“鑰匙串中”
image.png

選中安裝的證書後,右鍵,選擇 導出"Develop ID Application: xxxxx"
image.png
image.png

導出後,文件如下:
image.png

5. 配置環境變量
配置原因:electron應用在打包時候,能找到簽名文件

打開終端,執行如下命令:
sudo vim ~/.bash_profile

打開.bash_profile 文件後,配置如下內容:

// 存放p12文件的位置
export CSC_LINK = /Users/works/p12/certificate.p12
// 在這裏設置密碼,如:abc123456
export CSC_KEY_PASSWORD = *******

image.png

退出編輯:按esc -> 輸入 :qw

重載環境變量:
source ~/.bash_profile

查看環境變量:
env
有配置的內容説明成功了,如下:
image.png

5. 打包electron應用
打包輸出的命令行中,有如下信息代表簽名成功:
image.png

第二步:公證

2203年以前使用的是altool公證方式,但altool公證方式將在2023年過期無法再使用。故2023年後,使用notarytool的方式公證。
1. 什麼是公證:
image.png

MacOS應用公證:

公證的本質目的是: 向下載及使用你應用的人證明你的應用的可信任性
公證的應用是可以信任的,不會是一些破解或木馬應用等。
以MacOS來説,有兩種方式發佈應用。
一種是上架到AppStore,讓用户在AppStore搜索及下載應用;還有一種是發佈獨立的DMG格式的安裝文件,讓用户下載DMG進行安裝。
對於發佈獨立的DMG格式的場景下,最好對應用進行公證,否則用户安裝未公證的DMG應用時,MacOS會提示已損壞,無法打開。您應該將它移到廢紙簍,用户需要在安全設置中主動信任這個應用,才能正常使用這個應用。
image.png

2. MacOS公證的前提:

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

3. 新的公證流程:
1)創建憑證

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

可使用,如下命令查詢可用的證書:

security find-identity -v -p codesigning

若查不到也可以通用“鑰匙串訪問”查詢。
image.png

2)App專屬密碼創建
打開 https://account.apple.com/account/manage 創建App專屬密碼,登錄後,如下圖:
image.png

創建證書時遇到如下錯誤:

Error: HTTP status code: 401. Invalid credentials. Username or password is incorrect. Use the app-specific password generated at appleid.apple.com. Ensure that all authentication arguments are correct.
以下都是錯誤的密碼示例,會導致認證失敗:
mypassword (不是16位,沒有分隔符)
abcd-efgh-ijkl (只有12位,缺了一組)
ABCD-EFGH-IJKL-MNOP (使用了大寫字母 — 雖然有些可能包含大寫,但標準是小寫)
abcd-efgh-ijkl-mnop-qrst (20位,太長了)

3) 創建證書(只需要創建一次,後續直接使用即可,多個 App 可共用一個證書)
執行如下命令創建證書:

xcrun notarytool store-credentials "testCredentials" --apple-id test@abc.com --team-id P8Zxxxxx --password dtbb-bxzh-xfmr-itzc

注意:只需要創建一次,後續可直接使用創建好的證書 testCredentials
注意:多個App可共用此證書 testCredentials

4)提交公證
使用創建好的 testCredentials 上傳app進行公證

xcrun notarytool submit /Users/test/my-client/dist/my-client.dmg --keychain-profile "testCredentials" 
appPath: 需要公證的安裝包的完整路徑
--keychain-profile: 先前存儲的憑證名稱

上傳成功後,會顯示如下信息:

Successfully uploaded file. 
 id: 2efe2818-52ef-43a5-96dc-0797e4ca1022 (使用此id查詢公證進度)
 path: /Users/test/my-client/dist/my-client.dmg

5) 查詢公證進度

xcrun notarytool info  2efe2818-52ef-43a5-96dc-0797e4ca1022  --keychain-profile "testCredentials"

公證完成後,顯示如下信息:

Successfully received submission info
  createdDate: 2025-09-10T11:31:11.611Z
  id: 2efe2818-52f-43a5-96dc-0797e4ca1022
  name: my-client.dmg
  status: Accepted

6)將公證信息注入到安裝包中

執行如下命令,注入安裝包
xcrun stapler staple my-client.dmg

公證完成,會輸出如下信息:
The staple and validate action worked!

7)再次安裝軟件就不會提示不安全軟件了。

Add a new 評論

Some HTML is okay.