I made a haiku for the current state of distribution signing

When the deadline looms
Unreal Engine will rise
And reject your cert

It’s pretty bad. We need an adult.

So, for anyone still experiencing problems, can you try the following?

  1. Verify that your provisioning profile and certificates are set up correctly on the Apple dev site
  2. Download and install the cert
  3. Download and add the provisioning profile to UE
  4. Most important part: go to project settings -> iOS and clear out your bundle ID.
  5. Package. It will intentionally fail.
  6. Re-enter your bundle ID.
  7. Select your distribution provisioning profile, set the build to shipping, leave all certificates unselected
  8. Package, see if it works

Cheers in advance!

Okay, it was none of the above.

The problem appears to be an issue with the project settings panel itself. No matter what you do with certs in the project settings panel, UE will still fall back on the config file, which will never be updated with your changes.

Here’s how to get around it (verbose, sure to work version):

  1. Follow the quickstart guide and check you’ve set up all of your certs and profiles correctly. Just do give it a once-over to be sure. Then download and install your cert the normal way if you haven’t already.

  2. Open Keychain on your Mac and find your certificate. Get the name. It will be in this format: Apple Distribution: Intra-Q Limited (HKR9R2JZMG)

  3. Open YourProject/Config/DefaultEngine.ini and search for SigningCertificate. Change the value to the exact string above. Mine ended up looking like this: Apple Distribution: Intra-Q Limited (HKR9R2JZMG)

  4. Download your provisioning profile. I named mine descriptively, so the actual file downloaded is named Poppy_and_Buddy_Distribution.mobileprovision

  5. Go to /Users/yourname/Library/MobileDevice/Provisioning Profiles/ - it will be full of garbage. UE or Apple renames the profiles to some hash when it downloads them. Just put your provisioning profile file in here and don’t rename it.

  6. Go back to DefaultEngine.ini and set **MobileProvision **to your provisioning profile name. Mine looks like this: MobileProvision=Poppy_and_Buddy_Distribution.mobileprovision

  7. Delete YourProject/Saved/Config otherwise your settings won’t actually change.

  8. Load your project. Make sure you’ve set the build type to Shipping. You don’t have to click “for distribution” if you’re just doing a build for Testflight and want to include debugging stuff.

  9. Package your project. It should now work.

  10. Upload using Transporter to verify that it actually did work.