Skip to content

Prove

Progress checklist

demo.sh prove uses SSM Run Command (no SSH). On each probe it imports the lab public key from repos/gpg/lab-signing.asc on the local package bucket, runs gpg --verify on signed metadata (repomd.xml.asc / InRelease), then installs with repo_gpgcheck=1 (dnf) or signed-by= (apt). Ubuntu also runs apt-get update with Debug::Acquire::gpgv=1 so the verifier is visible.

Keep instance, gateway, and bucket Region matched. Package-level gpgcheck stays off for the sample EPEL RPM; the lab guarantee is repo metadata signing.

Prove reads via SSM probe and regional S3 gateway Laptop curls the public S3 URL and is denied. SSM Run Command on the probe EC2 curls the same regional hostname through the S3 gateway VPCE and succeeds. prove: SSM curl via gateway vs laptop deny Laptop public curl DENY 403 SSM Run Command ap-southeast-2 consumer VPC Probe EC2 S3 gateway ALLOW S3 primary S3 primary URL demo/see-....txt Match Region: instance + gateway + bucket hostname | Auckland prove needs up-consumer akl
Terminal window
export AWS_PROFILE=sandbox
  1. Sydney (primary) — AL2023 + Ubuntu:

    Terminal window
    ./scripts/demo.sh prove syd

    AL2023 probe (abbreviated SSM stdout):

    === lab public key ===
    pub rsa3072 …
    <fingerprint>
    uid private-s3-pkg-repo lab <lab@ps3p.example>
    === repo file ===
    [ps3p-lab]
    repo_gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ps3p-lab
    === gpg --verify repomd.xml.asc ===
    [GNUPG:] GOODSIG … private-s3-pkg-repo lab <lab@ps3p.example>
    gpg: Good signature from "private-s3-pkg-repo lab <lab@ps3p.example>" [unknown]
    === dnf install (repo_gpgcheck=1) ===
    Installing:
    hello x86_64 2.12.2-1.el9 ps3p-lab 84 k
    Complete!
    hello-2.12.2-1.el9.x86_64

    Ubuntu probe:

    === lab public key ===
    pub rsa3072 …
    <fingerprint>
    uid private-s3-pkg-repo lab <lab@ps3p.example>
    === sources.list ===
    deb [signed-by=/etc/apt/keyrings/ps3p-lab.gpg] https://ps3p-pkgs-**ACCOUNT**-syd.s3.ap-southeast-2.amazonaws.com/repos/deb/ubuntu/noble noble main
    === gpg --verify InRelease ===
    [GNUPG:] GOODSIG … private-s3-pkg-repo lab <lab@ps3p.example>
    === apt-get update (InRelease / gpgv) ===
    Hit:1 https://ps3p-pkgs-**ACCOUNT**-syd.s3.ap-southeast-2.amazonaws.com/… noble InRelease
    Got GOODSIG … !
    gpgv exited with status 0
    apt-key succeeded
    === apt-get install ===
    ii hello 2.10-3build1 amd64 example package based on GNU hello
    prove syd: al2023 + ubuntu Success
  2. Auckland (replica) — same checks against the CRR tree:

    Terminal window
    ./scripts/demo.sh prove akl
    === gpg --verify repomd.xml.asc ===
    [GNUPG:] GOODSIG … private-s3-pkg-repo lab <lab@ps3p.example>
    === gpg --verify InRelease ===
    [GNUPG:] GOODSIG … private-s3-pkg-repo lab <lab@ps3p.example>
    prove akl: al2023 + ubuntu Success
Terminal window
jq '{
packages: .packages,
syd: {al2023: .consumers.syd.al2023.instance_id, ubuntu: .consumers.syd.ubuntu.instance_id},
akl: {al2023: .consumers.akl.al2023.instance_id, ubuntu: .consumers.akl.ubuntu.instance_id}
}' .lab-state.json

Teardown