Mac Electron 应用的签名(signature)和公证(notarization)
背景
在MacOS 10.15之前,應用如果沒有簽名,那么首次打開時就會彈出這種“惡意軟件”的提示框。
這時只要應用簽名了,就不會彈這個框。
但在MacOS 10.14.5之后,應用如果沒有公證(簡單說就是將安裝包上傳到Apple審查),那么就會彈出更嚴重的“惡意軟件”提示框。
這時就需要在應用簽名之后,再進行公證(notarize app)。
簽名(signature)
簽名的步驟,關鍵是生成一個簽名證書,然后用這個證書來簽名應用。
PS:開發者賬號是必不可少的,這一步驟就不說了。
1、創建一個CertificateSigningRequest.certSigningRequest文件。
填必需的信息
這樣就生成一個CertificateSigningRequest.certSigningRequest文件了。
2、生成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 下載后,雙擊導入鑰匙串。
3、設置環境變量。
你導入的證書,默認的訪問權限是“允許訪問之前確認”。
這時你需要導出一個p12文件,配置到環境變量,這樣打包的工具才有權限訪問到這個證書。
導出方式:
環境變量:
export CSC_LINK=‘你的p12文件路徑' export CSC_KEY_PASSWORD=‘你創建p12文件的密碼’
PS:當然,如果你想偷懶不導出p12文件、不設環境變量,也可以將訪問控制選擇“允許所有應用程序訪問此項目”,只不過這樣證書就可能被濫用。
4、打包簽名。
如果你是打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
顯示所有上傳到蘋果的包
xcrun altool --notarization-history 0 -u "appid" -p "app_password"
查單個記錄。里面有日志,公證失敗可查看
xcrun altool --notarization-info bfd6682e-49bc-4e82-ba8f-cdf0e8668502 -u "appid" -p "app_password"
總結
當我做完上面的步驟,安裝包在其他電腦安裝時都不會報“惡意軟件”了,不過看了網上資料還有其他步驟要做,這個以后再確認了。
參考文獻
1、https://github.com/electron/electron-notarize
2、https://blog.csdn.net/ftpleopard/article/details/102721138
3、https://blog.csdn.net/simplehouse/article/details/100531116
4、https://www.cnblogs.com/mmykdbc/p/11468908.html
總結
以上是生活随笔為你收集整理的Mac Electron 应用的签名(signature)和公证(notarization)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: list python 转tensor_
- 下一篇: in作为介词的用法_英语中in/on/a