Mac Electron 應用簽名(signature)和公證(notarization)

????????在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)中。這樣,即使用戶的設備無法訪問互聯網,也可以驗證軟件的真實性和安全性。


附加公證票據的作用

  1. 離線驗證

    • 公證票據包含了 Apple 對軟件的驗證信息。

    • 附加票據后,即使用戶的設備處于離線狀態,macOS 仍然可以驗證軟件的合法性。

  2. 提高用戶體驗

    • 如果沒有附加票據,macOS 在首次運行軟件時會嘗試從 Apple 服務器下載公證信息。這可能會導致延遲或失敗(例如網絡問題)。

    • 附加票據后,驗證過程會更快,用戶體驗更流暢。

  3. 增強安全性

    • 公證票據證明了軟件已經通過 Apple 的公證檢查,確保軟件沒有被篡改或包含惡意代碼。

    • 附加票據后,macOS 可以更嚴格地驗證軟件的完整性。

  4. 滿足分發要求

    • 對于通過非 Mac App Store 分發的軟件(如直接下載或第三方渠道),Apple 要求軟件必須經過公證并附加票據。

使用?xcrun notarytool submit?提交公證請求時,添加?--wait?參數會讓命令等待公證完成并返回結果。等待時間通常取決于文件大小、Apple 服務器的負載以及公證隊列的長度。以下是關于等待時間的具體說明和建議:


等待時間

  1. 典型等待時間

    • 對于大多數小型或中型文件(如幾十 MB 到幾百 MB),公證通常在?幾分鐘到半小時?內完成。

    • 對于較大的文件(如超過 1 GB),可能需要?更長時間(例如 1 小時或更久)。

  2. 影響因素

    • 文件大小:文件越大,處理時間越長。

    • 服務器負載:Apple 的公證服務器負載較高時(例如新版本 Xcode 發布后),處理時間可能會延長。

    • 網絡速度:上傳文件到 Apple 服務器的速度也會影響總時間。

  3. --wait?參數的作用

    • 添加?--wait?參數后,命令會一直等待,直到公證完成并返回最終結果。

    • 如果不添加?--wait,命令會立即返回提交 ID,你需要手動檢查公證狀態。

  4. 重新提交公證

    如果等待時間過長(例如超過 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博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/67510.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67510.shtml
英文地址,請注明出處:http://en.pswp.cn/web/67510.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

1、開始簡單使用rag

文章目錄 前言數據存放申請api開始代碼安裝依賴從文件夾中讀取文檔文檔切塊將分割嵌入并存儲在向量庫中檢索部分代碼構造用戶接口演示提示 整體代碼 前言 本章只是簡單使用rag的一個示例&#xff0c;為了引出以后的學習&#xff0c;將整個rag的流程串起來 數據存放 一個示例…

C 標準庫 - `<errno.h>`

C 標準庫 - <errno.h> 引言 在C語言編程中,正確處理錯誤是保證程序穩定性和可靠性的關鍵。C標準庫中的<errno.h>頭文件提供了錯誤碼定義和宏,使得開發者能夠更好地管理和處理程序運行過程中可能出現的錯誤。本文將詳細介紹<errno.h>頭文件的作用、常用錯…

愛書愛考平臺說明

最近我開發了一個綜合性的考試平臺&#xff0c;內容包括但不限于職業資格證考試、成人教育、國家公務員考試等內容。目前1.0版本已經開發完成&#xff0c;其他的功能陸續完善中。 微信小程序搜索"愛書愛考" 微信小程序圖標如下圖: 目前維護了java相關的面試題的考題…

ZZNUOJ(C/C++)基礎練習1011——1020(詳解版)

目錄 1011 : 圓柱體表面積 C語言版 C版 1012 : 求絕對值 C語言版 C版 1013 : 求兩點間距離 C語言版 C版 1014 : 求三角形的面積 C語言版 C版 1015 : 二次方程的實根 C語言版 C版 1016 : 銀行利率 C語言版 C版 1017 : 表面積和體積 C語言版 C版 代碼邏輯…

Java面試題2025-設計模式

1.說一下開發中需要遵守的設計原則&#xff1f; 設計模式中主要有六大設計原則&#xff0c;簡稱為SOLID &#xff0c;是由于各個原則的首字母簡稱合并的來(兩個L算一個,solid 穩定的)&#xff0c;六大設計原則分別如下&#xff1a; 1、單一職責原則 單一職責原則的定義描述非…

認識小程序的基本組成結構

1.基本組成結構 2.頁面的組成部分 3.json配置文件 4.app.json文件(全局配置文件&#xff09; 5.project.config.json文件 6.sitemap.json文件 7.頁面的.json配置文件 通過window節點可以控制小程序的外觀

git中有關old mode 100644、new mode 10075的問題解決小結

在 Git 版本控制系統中&#xff0c;文件權限變更是一種常見情況。當你看到類似 old mode 100644 和 new mode 100755 的信息時&#xff0c;這通常表示文件的權限發生了變化。本文將詳細解析這種情況&#xff0c;并提供解決方法和注意事項。 問題背景 在 Git 中&#xff0c;文…

20個整流電路及仿真實驗匯總

0、 前言 以下是關于“20個整流電路及仿真實驗匯總”的前言部分: 在現代電力電子技術領域,整流電路作為將交流電(AC)轉換為直流電(DC)的關鍵電路,廣泛應用于各類電源設計、信號處理以及電力電子設備中。整流電路不僅能夠為電子設備提供穩定的直流電源,還在電力傳輸、…

截取窗口的完整矩形不包括陰影區域(含邊框和標題欄)

在Windows編程中&#xff0c;GetWindowRect 函數用于獲取窗口的矩形區域&#xff0c;包括窗口的邊框和標題欄。如果你希望獲取窗口的客戶區&#xff08;不包含窗口邊框、標題欄和陰影區域&#xff09;&#xff0c;可以使用 GetClientRect 函數。 區別 GetWindowRect&#xff1…

第30章 測試驅動開發中的設計模式解析(Python 版)

寫在前面 這本書是我們老板推薦過的&#xff0c;我在《價值心法》的推薦書單里也看到了它。用了一段時間 Cursor 軟件后&#xff0c;我突然思考&#xff0c;對于測試開發工程師來說&#xff0c;什么才更有價值呢&#xff1f;如何讓 AI 工具更好地輔助自己寫代碼&#xff0c;或許…

2025美賽復盤總結反思(論文手)

充實的經歷&收獲 美賽這個過程&#xff0c;確實逼著自己學了不少東西&#xff0c;excel本身&#xff0c;以及發現Ai確實能幫忙處理不少的了&#xff0c;也第一次發現原來自己熬通宵也能很精神&#xff08;當然確實是傷身體的&#xff09; 好的經驗&#xff1a; 積極搜索…

從0開始使用面對對象C語言搭建一個基于OLED的圖形顯示框架(協議層封裝)

目錄 協議層設計&#xff0c;以IIC為例子 關于軟硬件IIC 設計的一些原則 完成協議層的抽象 刨析我們的原理 如何完成我們的抽象 插入幾個C語言小技巧 完成軟件IIC通信 開始我們的IIC通信 結束我們的IIC通信 發送一個字節 &#xff08;重要&#xff09;完成命令傳遞和…

舉例說明python單利模式的必要性

單例模式的核心目的是確保一個類只有一個實例&#xff0c;并提供一個全局訪問點來獲取這個實例。這種設計模式在某些場景下非常必要&#xff0c;尤其是在需要嚴格控制資源訪問、共享狀態或配置管理的場景中。下面通過幾個具體的例子來說明Python中單例模式的必要性。 1. 數據庫…

【騰訊云】騰訊云docker搭建單機hadoop

這里寫目錄標題 下載jdk hadoop修改hadoop配置編寫Dockerfile構建鏡像運行鏡像創建客戶端 下載jdk hadoop wget --no-check-certificate https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz wget --no-check-certificate https://repo.huaweicloud.…

設計模式 - 行為模式_Template Method Pattern模板方法模式在數據處理中的應用

文章目錄 概述1. 核心思想2. 結構3. 示例代碼4. 優點5. 缺點6. 適用場景7. 案例&#xff1a;模板方法模式在數據處理中的應用案例背景UML搭建抽象基類 - 數據處理的 “總指揮”子類定制 - 適配不同供應商供應商 A 的數據處理器供應商 B 的數據處理器 在業務代碼中整合運用 8. 總…

HTML5+SVG+CSS3實現雪中點亮的圣誕樹動畫效果源碼

源碼介紹 這是一款基于HTML5SVGCSS3實現雪中點亮的圣誕樹動畫效果源碼。畫面中的圣誕樹矗立在雪地中&#xff0c;天上飄落著雪花。當鼠標滑過圣誕樹時&#xff0c;可見到圣誕樹上的燈光閃爍&#xff0c;同時左下角探出雪怪模樣的半個腦袋&#xff0c;四處張望著。整體畫面栩栩…

C基礎寒假練習(3)

一、求數組中的第二大值 #include <stdio.h> int main() {int arr[] {12, 35, 1, 10, 34, 1};int size sizeof(arr) / sizeof(arr[0]);if (size < 2) {printf("數組元素不足兩個\n");return 0;}int first -2147483648, second -2147483648; // 使用IN…

【linux三劍客】grep練習題

題目 進入/lianxi目錄&#xff0c;復制/etc/passwd到當前目錄下&#xff0c;然后對passwd進行操作查找出當前passwd文件中以ftp或者mail開頭的行&#xff0c;在屏幕上輸出。查找出當前passwd文件中有沒有以r、m、f開頭的行&#xff0c;在屏幕上輸出。查找出當前passwd文件中以…

C++,STL,【目錄篇】

文章目錄 一、簡介二、內容提綱第一部分&#xff1a;STL 概述第二部分&#xff1a;STL 容器第三部分&#xff1a;STL 迭代器第四部分&#xff1a;STL 算法第五部分&#xff1a;STL 函數對象第六部分&#xff1a;STL 高級主題第七部分&#xff1a;STL 實戰應用 三、寫作風格四、…

【Node.js】Koa2 整合接口文檔

部分學習來源&#xff1a;https://blog.csdn.net/qq_38734862/article/details/107715579 依賴 // koa2-swagger-ui UI視圖組件 swagger-jsdoc 識別寫的 /***/ 轉 json npm install koa2-swagger-ui swagger-jsdoc --save配置 config\swaggerConfig.js const Router requir…