背景
在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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/5126.html
標籤:其他
上一篇:git commit vim報錯
下一篇:webpack打包 The 'mode' option has not been set, webpack will fallback to
