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

背景html

在MacOS 10.14.5以前,應用若是沒有簽名,那麼首次打開時就會彈出這種「惡意軟件」的提示框。git

這時只要應用簽名了,就不會彈這個框。github

但在MacOS 10.14.5以後,應用若是沒有公證(簡單說就是將安裝包上傳到Apple審查),那麼就會彈出更嚴重的「惡意軟件」提示框。app

這時就須要在應用簽名以後,再進行公證處理(notarize app)。electron

簽名(signature)ide

簽名的步驟,關鍵是生成一個簽名證書,而後用這個證書來簽名應用。工具

PS:開發者帳號是必不可少的,這一步驟就不說了。ui

一、建立一個CertificateSigningRequest.certSigningRequest文件。spa

填必需的信息.net

這樣就生成一個CertificateSigningRequest.certSigningRequest文件了。

二、生成Developer ID Application證書。

(1)、登錄 https://developer.apple.com/account/resources/certificates/add

(2)、點擊Certificates,選擇添加證書。

(3)、選擇 Developer ID Application 類型的證書。

(4)、導入第一步生成的CertificateSigningRequest.certSigningRequest文件,導入完畢後就能夠下載證書了。

(5)、developerID_application.cer 下載後,雙擊導入鑰匙串。

三、設置環境變量。

你導入的證書,默認的訪問權限是「容許訪問以前確認」。

這時你須要導出一個p12文件,配置到環境變量,這樣打包的工具纔有權限訪問到這個證書。

導出方式:

環境變量:

export CSC_LINK=‘你的p12文件路徑'
export CSC_KEY_PASSWORD=‘你建立p12文件的密碼’

PS:固然,若是你想偷懶不導出p12文件、不設環境變量,也能夠將訪問控制選擇「容許全部應用程序訪問此項目」,只不過這樣證書就可能被濫用。

四、打包簽名。

若是你是打Electron應用,它的electron-builder工具會自動尋找鑰匙串裏的 Developer ID Application 證書,並進行打包簽名。

公證(notarization)

對於 Electron 應用,它有 electron-notarize 的工具來作公證。但遺憾的是,我使用的時候出現了各類各樣的報錯,相關GitHub issue上也發現有人出現跟我相似的問題,不過沒有明確的解決辦法。

折騰半天,決定用原始的辦法來解決——命令行工具。

一句命令

xcrun altool --notarize-app --primary-bundle-id 「com.xxx.xxx" --username 「your developer appleid" --password 「app-password" --asc-provider "ProviderShortname" -t osx --file xxx.dmg

primary-bundle-id: 本身app的bundle id。

username:蘋果開發者ID。

password:應用專用密碼。(登陸appleid.apple.com,而後找到建立app password的地方,建立一個應用專用密碼,這樣能夠避免暴露真實的密碼。)

asc-provider:證書提供者。查詢命令以下:

xcrun altool --list-providers -u "apple id" -p "app password」

公證成功是這樣的

No errors uploading 'xxx.xxx'.
RequestUUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

總結

當我作完上面的步驟,安裝包在其餘電腦安裝時都不會報「惡意軟件」了,不過看了網上資料還有其餘步驟要作,這個之後再確認了。 

參考文獻

一、https://github.com/electron/electron-notarize

二、https://blog.csdn.net/ftpleopard/article/details/102721138

三、https://blog.csdn.net/simplehouse/article/details/100531116

四、http://www.javashuo.com/article/p-oqincthb-cz.html

相關文章
相關標籤/搜索