runinfra 0.2.3
Standalone runinfra executables for 0.2.3. Node is not required.
Download the file for your platform, check it against SHA256SUMS, then make it executable.
curl -fsSLO https://github.com/RightNow-AI/runinfra-cli/releases/download/v0.2.3/runinfra-linux-x64
curl -fsSLO https://github.com/RightNow-AI/runinfra-cli/releases/download/v0.2.3/SHA256SUMS
sha256sum --ignore-missing -c SHA256SUMS
chmod +x runinfra-linux-x64
./runinfra-linux-x64 --version
Use a -musl file if the host runs musl rather than glibc, such as Alpine.
| File | Platform |
|---|---|
| runinfra-linux-x64 | Linux, x86_64, glibc |
| runinfra-linux-x64-musl | Linux, x86_64, musl |
| runinfra-linux-arm64 | Linux, arm64, glibc |
| runinfra-linux-arm64-musl | Linux, arm64, musl |
| runinfra-darwin-x64 | macOS, Intel |
| runinfra-darwin-arm64 | macOS, Apple silicon |
| runinfra-windows-x64.exe | Windows, x86_64 |
| SHA256SUMS | Checksums for the files above |
| SHA256SUMS.sig | Ed25519 signature over SHA256SUMS |
| runinfra-release.pub | The public key that signature was made with |
Verify the signature
install.sh does this for you. By hand:
curl -fsSLO https://github.com/RightNow-AI/runinfra-cli/releases/download/v0.2.3/SHA256SUMS.sig
curl -fsSLO https://github.com/RightNow-AI/runinfra-cli/releases/download/v0.2.3/runinfra-release.pub
openssl pkeyutl -verify -pubin -inkey runinfra-release.pub -rawin -in SHA256SUMS -sigfile SHA256SUMS.sig
It prints "Signature Verified Successfully" and exits 0.
The -rawin option needs OpenSSL 1.1.1 or newer. macOS ships LibreSSL as
/usr/bin/openssl, which does not have it, so on a Mac use a real OpenSSL
(brew install openssl@3).
runinfra-release.pub arrives from the same release as the file it verifies,
so on its own it proves nothing. Whoever could replace the binary and
SHA256SUMS could replace the key and this page alongside them, and serve a
set that agrees with itself. Derive the fingerprint of the key you actually
downloaded:
openssl pkey -pubin -in runinfra-release.pub -outform DER | tail -c 32 | openssl dgst -sha256
Then compare what that prints against a source that did not hand you this
download:
- the @runinfra/cli README on npmjs.com, https://www.npmjs.com/package/@runinfra/cli
- the RELEASE_KEY_FINGERPRINT value pinned inside install.sh
For reference, this release was signed with:
5b2c8f637c0cd00a61ec6f126e5a9493c022ef1ea5be70fdd3ef4adf55801532
That value is printed here by the same pipeline that produced these assets,
so it is a convenience for reading the output above, not the thing you check
against. The two sources named above are the check.
install.sh does not have this problem. It carries the key inside the script
and never downloads one, so a key swapped in the release assets does not get
past it, and a release serving no signature at all ends the install rather
than continuing with a warning. install.ps1 is different: it verifies the
checksum and checks no signature at all, because Windows PowerShell 5.1 has
no Ed25519, and it prints that limitation as it runs.
What the signature proves: these checksums came out of the RunInfra release
pipeline and have not been altered since. That catches a release asset
changed after publication, and a mirror or CDN serving something other than
what was published.
What it does not prove: that the pipeline itself was not subverted. The
signing key is held by CI, so whoever can steal the release token or change
the release workflow can also reach the key and produce a signature that
verifies. This is integrity of the download, not proof of the build.
Built from RightNow-AI/RunInfra-Landing@264d323