Skip to content

Align release signing with the ruby/actions SignPath pipeline - #10

Open
hsbt wants to merge 3 commits into
masterfrom
signpath-signing-hardening
Open

Align release signing with the ruby/actions SignPath pipeline#10
hsbt wants to merge 3 commits into
masterfrom
signpath-signing-hardening

Conversation

@hsbt

@hsbt hsbt commented Aug 14, 2026

Copy link
Copy Markdown
Member

This ports the signing hardening established in ruby/actions#137 to the rb.exe release pipeline, ahead of SignPath adding rbmanager as the second project of the ruby organization. Signature verification moves into .github/actions/sign and uses signtool verify /pa /tw, with optional pinning via SIGNPATH_CERTIFICATE_THUMBPRINT. Because SignPath test certificates chain to no trusted root, SIGNPATH_TEST_CERTIFICATE=true switches verification to only assert that a signature from the expected certificate is present. A workflow_dispatch run now rehearses the whole pipeline and uploads the signed binaries as a workflow artifact instead of creating a release. The tag name is validated against an anchored pattern before it is interpolated into pwsh. Until the SignPath project variables are filled in, tag pushes keep producing unsigned draft releases as before.

ruby/actions#137

hsbt and others added 3 commits August 14, 2026 11:26
Git refnames may contain quotes, so an unvalidated tag name could
break out of a quoted pwsh string in the release workflow. The same
review of the ruby/actions signing pipeline found an equivalent
injection through an unanchored version check.

ruby/actions#137

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Verification moves into the sign action and uses signtool verify
/pa /tw, with optional pinning to the certificate thumbprint.
SignPath test certificates are deliberately untrusted, so
SIGNPATH_TEST_CERTIFICATE=true switches to a rehearsal check that
only asserts a signature from the expected certificate is present.

ruby/actions#137

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A manual run builds, signs and verifies exactly like a release, then
uploads the signed binaries as a workflow artifact instead of
creating a GitHub release. This lets the SignPath pipeline be
exercised end to end, including its onboarding review, without
cutting a release.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant