You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This adds two things. The first is extending ExtraFileSigner to support signing files locally, rather than shipping them off to a signing server to be signed and shipped back.
However, we are no longer using this functionality, and it remains there in case we need it later. With MacOS 15, we now have to sign every single binary, dylib, and bundle in the entire package, which is hundreds of files. Also, the previous method of signing was pretty awkward, where we'd make the .pkg and .dmg, then mount the dmg, sign the pkg, then recreate the dmg.
Finally, the VANAGON_FORCE_SIGNING env var was intended to allow you to build the package without signing for dev purposes. However, the only test it would use to determine if it should proceed with trying to sign or not was SSHing to the remote signing host. It did not test if signing actually worked on that host, and would fail even a dev build if signing failed and VANAGON_FORCE_SIGNING was unset.
Now, the flow looks like the following. Note the paths are openvox-agent specific, because that is the only Mac package we make right now. We'll make this more flexible in the future.
- If VANAGON_FORCE_SIGNING is not set, don't do any of the signing/notarizing at all. If you want to sign, you must set VANAGON_FORCE_SIGNING.
- Sign every binary, dylib, and bundle.
- Verify the signature on every binary, dylib, and bundle.
- Sign the .pkg file.
- Verify the signature on the .pkg file.
- Sign the .dmg file.
- Verify the signature on the .dmg file.
- Submit the .dmg for notarization.
- Staple the approved notarization to the .dmg file.
- Test that Gatekeeper is happy with the .dmg file.
When you have VANAGON_FORCE_SIGNING set, you must also have the following environment variables set.
SIGNING_KEYCHAIN - the name of the keychain containing the code/installer signing identities
SIGNING_KEYCHAIN_PW - the password to unlock the keychain
APPLICATION_SIGNING_CERT - the identity description used for application signing
INSTALLER_SIGNING_CERT - the identity description used for installer .pkg signing
NOTARY_PROFILE - The name of the notary profile stored in the keychain
You must do this on a VM that has the appropriate application and installer identities (certs + private key) as well as a valid notary profile.
0 commit comments