Skip to content

fix(security): refresh the expired vendor signing keys - #210

Merged
bgauduch merged 5 commits into
masterfrom
fix/refresh-vendor-gpg-keys
Sep 25, 2026
Merged

bgauduch merged 5 commits into
masterfrom
fix/refresh-vendor-gpg-keys

Conversation

@bgauduch

@bgauduch bgauduch commented Sep 21, 2026 •

Copy link
Copy Markdown
Owner

Summary

Both keys under security/ had lapsed, and neither failure was visible: gpg --verify exits 0 for a good signature made by an expired key, so every download kept verifying while the expiry bound was gone.

key was now fingerprint
hashicorp.asc expired 2026-04-18 2030-03-01 C874011F0AB405110D02105534365D9472D7468F, unchanged
awscliv2.asc expired 2023-09-17 2027-07-01 FB5DB77FD5C118B80511ADA8A6310ACC4672475C, unchanged

Same keys, later expiries — neither trust root moves. Sources: HashiCorp's /.well-known/pgp-key.txt, and the CLI install guide for AWS, the only place it publishes one. The AWS copy was two generations behind: 2023-09-17, then the keyserver's 2026-07-07, now 2027-07-01.

Verified before pushing: every SHA256SUMS signature under security/ (1.14.9, 1.15.9, 1.16.3) and both published architectures' AWS CLI signatures for 2.36.49 report a good signature under the refreshed keys and no longer warn expired — the AWS archives downloaded from awscli.amazonaws.com for the check. validate.sh --fast green; build-test green on the full matrix.

Unblocks #211, whose check now reports PASS vendor keys in security/ are unexpired (earliest 2027-07-01).

Roadmap phase / closes: Phase 3 — closes #106 P0 action 2

Breaking change

None.

Architecture Decision Record

  • This PR adds/updates an ADR under docs/adr/ (link: ____)
  • This PR is not a structural change — no ADR needed

Key material only; no policy change.

Checklist

  • PR title follows Conventional Commits
  • Commits are scoped and reviewable
  • Docs / roadmap updated if behaviour or policy changed
  • Docs point to their single home (no restated facts); intros/sections earn their space
  • Touches only files within the declared phase scope

security/hashicorp.asc had lapsed on 2026-04-18, and nothing said so:
gpg --verify returns exit 0 for a good signature made by an expired key,
so every Terraform download kept verifying and the build kept passing while
the expiry bound had quietly gone. The key still in use, re-fetched from
the vendor, now carries a self-signature valid to 2030-03-01.

Same key, later expiry: the primary fingerprint is unchanged
(C874011F0AB405110D02105534365D9472D7468F), so the trust root does not
move. Verified before committing — every SHA256SUMS signature in security/
still reports a good signature under the refreshed copy and no longer warns
expired, including the 1.15.9 and 1.16.3 material added in #205. The one
signing subkey that expired in 2022 is a rotated historical subkey and is
carried by the vendor's own copy.

security/awscliv2.asc is expired too, since 2023-09-17, and is not fixed
here: AWS publishes its key only in the install guide, and that host is
unreachable from a hosted session. It needs the maintainer.
security/awscliv2.asc had lapsed on 2023-09-17, three years, and failed
silently the same way the HashiCorp key did: gpg --verify returns exit 0
for a good signature made by an expired key, so every AWS CLI download
kept verifying and nothing reported that the expiry bound had gone.

Same key, later expiry: the primary fingerprint is unchanged
(FB5DB77FD5C118B80511ADA8A6310ACC4672475C), so the trust root does not
move; the self-signature now runs to 2027-07-01. Taken from the CLI
install guide, the only place AWS publishes it.

Verified before committing: the committed signatures for 2.36.49 on both
published architectures report a good signature under the refreshed copy
and no longer warn expired, checked against the real archives downloaded
from awscli.amazonaws.com.

The repo's copy was two generations behind. 2023-09-17, then the
keyserver's 2026-07-07, now 2027-07-01.
@bgauduch bgauduch changed the title fix(security): refresh the expired HashiCorp signing key fix(security): refresh the expired vendor signing keys Sep 24, 2026
@bgauduch
bgauduch merged commit c166cea into master Sep 25, 2026
10 of 11 checks passed
@bgauduch
bgauduch deleted the fix/refresh-vendor-gpg-keys branch September 25, 2026 05:40
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.

📌 Tracking & resume — modernization + agent framework

1 participant