背景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