Validate signing certificates with system LibreSSL - #311
Open
davertay-j wants to merge 1 commit into
Open
Conversation
The macOS-26 runner image resolves `openssl` to OpenSSL 3, which refuses to read our Apple .p12 exports because they are encrypted with RC2-40-CBC and that cipher now lives behind the optional legacy provider. Certificate validation has failed on every push to main since the runner bump in #307, and the next release tag would have failed publish.yml the same way. Call /usr/bin/openssl (LibreSSL) explicitly rather than adding -legacy, so the step no longer depends on which openssl happens to come first on PATH. Co-authored-by: Cursor <cursoragent@cursor.com>
Phoenix7351
approved these changes
Aug 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes the
Upload developer IPA to S3workflow, which has failed on every push tomainsince the macOS-26 runner bump in #307.The macOS-26 runner image resolves
opensslto OpenSSL 3.x, while macOS-15 resolved it to the system LibreSSL. Our Apple.p12exports are encrypted with RC2-40-CBC, and OpenSSL 3 moved RC2 behind an optional "legacy" provider that is not loaded by default, so the certificate validation steps die with:This calls
/usr/bin/openssl(LibreSSL 3.3.6, which supports RC2) explicitly in both the development and distribution validation steps.Note that only the validation steps were broken.
security importin the preceding install steps reads RC2.p12files fine, so an expiry-check safety net was taking down the whole pipeline.Why not
-legacy?Adding
-legacyto thepkcs12calls also works on OpenSSL 3, but LibreSSL rejects that flag entirely — so it would just invert the PATH dependency. An absolute path is deterministic regardless of whichopenssla future runner image puts first. The most durable fix is re-exporting both.p12secrets with AES-256, but that needs a secret rotation and is worth doing separately.Blast radius
upload-developer-ipa-s3.yml— currently red on every push tomain; fixed here.publish.yml— uses the same composite action and has not run since before the runner bump. The next release tag would have failed identically. Also fixed here.ci.ymlandupload-simulator-saucelabs.yml— unaffected, neither does certificate signing.Test plan
Validate Development Certificatewith the RC2 error..p12fails with the identical error under OpenSSL 3.6.3 and succeeds under/usr/bin/openssl..p12, including thedate -jexpiry comparison — passes with exit 0.action.ymlparses as valid YAML with all 10 steps intact.Upload developer IPA to S3goes green on the merge commit tomain.Made with Cursor