See: https://developer.apple.com/documentation/security/notarizing_your_app_before_distribution
"Beginning in macOS 10.14.5, all new or updated kernel extensions and all software from developers new to distributing with Developer ID must be notarized in order to run. Beginning in macOS 10.15, notarization is required by default for all software."
Users will be prompted to install and run Brave through several prompts without notarization.
Added this 1mo ago https://github.com/brave/devops/issues/1187
Here are the tasks I've identified for this:
[ ] Verify we meet the requirements in the documentation section 'Prepare Your Software for Notarization'
[ ] Identify if we require 2 rounds of notarization
[ ] Notarize pre-existing software
.app files in order to perform notarization. Therefore the versions we want to notarize will require that we rebuild them prior to notarization.[ ] Perform xcode notarization during official builds
Good plan right there. Don't think we'll go back to notarize old versions. Maybe we can try some stuff manually to get a taste. Glad we already migrated all nodes to Xcode 10.
Just a reminder that the current Catalina version is Beta 6 and GA should be in Q3, most probably September.
I just noticed there is a chromium python script to notarize: https://chromium.googlesource.com/chromium/src.git/+/master/chrome/installer/mac/notarize_thing.py
And also:
https://chromium.googlesource.com/chromium/src.git/+/master/chrome/installer/mac/signing/notarize.py
Making some progress, I've gotten the notarization step automated now(opened PR 3064 and PR 5485), but that uncovered a few binaries that are not signed:
https://github.com/brave/Sparkle/issues/7
Those sparkle binaries are likely only the tip of the iceberg. When I notarized manually, I had to go through 3 iterations of codesigning binaries manually. Additional binaries were not listed as unsigned until I signed the binaries that were listed, then tried notarizing again. From my notes (some but not all of the) additional binaries are:
FYI I wanted to document that we're waiting on the Sparkle release here for the capability to sign with the hardened runtime option for sparkle artifacts.
Sparkle release 1.22.0 was finally officially released on Sept 22. I will be working to integrate this into our notarization process ASAP.
That's great, thanks for checking @mbacchi!
thanks for the update, @mbacchi! đ
I opened https://github.com/brave/brave-browser/issues/6572 to cover the Sparkle upgrade and signing some Sparkle binaries in order to split it out as a separate issue, as discussed with @bsclifton.
Verification PASSED on macOS 10.15.1 x64 using the following build:
Brave | 0.71.111 Chromium: 78.0.3904.87Â (Official Build)Â (64-bit)
-- | --
Revision | 20c21f4010010f32462ea8e1d6af30cef66d48c8-refs/branch-heads/3904@{#840}
OS | macOS Version 10.15.1 (Build 19B88)
0.71.111 CR: 78.0.3904.87 via the dmg & pkg and ran spctl --assess --verbose /Applications/Brave\ Browser.app/:Kamils-MBP:~ kjozwiak$ spctl --assess --verbose /Applications/Brave\ Browser.app/
/Applications/Brave Browser.app/: accepted
source=Notarized Developer ID
0.71.111 CR: 78.0.3904.87 using both dmg and pkg0.71.111 CR: 78.0.3904.87 without any issues once installed0.71.111 CR: 78.0.3904.87 using both the dmg & pkg:
0.71.111 CR: 78.0.3904.87 via the dmg only displayed the following warning:
I also went through referrals using the following codes and ensured the following:
Brave-Browser-KAM582.pkg
~/Library/Application\ Support/BraveSoftware/Brave-Browser/promoCode was created and included KAM582promoCode was removed once 0.71.111 CR: 78.0.3904.87 is launchedbrave://local-state lists "promo_code": "KAM582"Brave-Browser-RED194.pkg
~/Library/Application\ Support/BraveSoftware/Brave-Browser/promoCode was created and included RED194promoCode was removed once 0.71.111 CR: 78.0.3904.87 is launchedbrave://local-state lists "promo_code": "RED194"Brave-Browser.pkg
promoCode wasn't created under ~/Library/Application\ Support/BraveSoftware/Brave-Browser/brave://local-state lists "promo_code": "BRV001"
Most helpful comment
Here are the tasks I've identified for this:
[ ] Verify we meet the requirements in the documentation section 'Prepare Your Software for Notarization'
[ ] Identify if we require 2 rounds of notarization
[ ] Notarize pre-existing software
.appfiles in order to perform notarization. Therefore the versions we want to notarize will require that we rebuild them prior to notarization.[ ] Perform xcode notarization during official builds