CONTAINERS-SI...NG-PARAMS.YAML(5)
π containers-sigstore-signing-params.yaml β the sigstore signing parameter file, explained π
okay bestie, sit down, grab a boba, because this one is literally the cheat sheet for the syntax of the sigstore signing parameter file π and it's lowkey important so we're doing it properly.
β¨ NAME β¨
containers-sigstore-signing-params.yaml β it's the syntax spec for the sigstore signing parameter file. that's the whole vibe. π
πΈ DESCRIPTION πΈ
So. Sigstore signing parameter files exist to store options that may be required to create sigstore signatures. That's it, that's the job.
Big thing you need to know: there is no default location for these files. None. Not a single one. π They are user-managed, and they get used as inputs to a container image signing operation. Like, for example:
skopeo copy --sign-by-sigstore=param-file.yaml
podman push --sign-by-sigstore=param-file.yaml
see how it's just a plain input file? yeah. you bring the file, they do the signing. π«Ά
π¦ FORMAT π¦
Sigstore signing parameter files use YAML. Periodt.
Many parameters are optional, but β and this is the important part β the file must specify enough to create a signature; in particular, either a private key, or Fulcio. one of the two, bestie. you can't just show up empty-handed. π
π Signing with Private Keys π
privateKeyFile: path β creates a signature using a private key at path. And listen: the mere existence of this field triggers the use of a private key. it doesn't ask twice, it doesn't wait, it's main character energy. β¨privateKeyPassphraseFile: passphrasePath β reads the passphrase required to useprivateKeyFilefrom passphrasePath.- Optional: if this is not set, the user must provide the passphrase interactively. so like, you'll be typing it in yourself, live, no cap. β¨οΈ
π§ Signing with Fulcio-generated Certificates π§
Okay this one's the glow-up. Instead of a static private key, the signing process generates a short-lived key pair and asks a Fulcio server to issue a certificate for that key pair, based on the user authenticating to an OpenID Connect provider. iconic behaviour honestly.
To specify Fulcio, include a fulcio sub-object with one or more of the following keys. And heads up: a Rekor server must be specified as well. don't forget the Rekor part, bestie, it's not optional vibes. π
fulcioURL: URL β Required. the URL of the Fulcio server to use. πoidcMode:interactive|deviceGrant|staticTokenβ Required. this specifies how to obtain the necessary OpenID Connect credential. and here's the tea on each one:interactiveβ opens a web browser on the same machine, or if that is not possible, asks the user to open a browser manually and to type in the provided code. It requires the user to be able to directly interact with the signing process. so like, you gotta be there. present. in the room. π«ΆdeviceGrantβ uses a device authorization grant flow (RFC 8628). It requires the user to be able to read text printed by the signing process, and to act on it reasonably promptly. so read fast and click faster, okay? β°staticTokenβ provides a pre-existing OpenID Connect βID tokenβ, which must have been obtained separately. you bring the token, it does the rest. π₯
oidcIssuerURL: URL β Required foroidcMode: interactiveordeviceGrant. the URL of an OpenID Connect issuer server to authenticate with. πoidcClientID: client ID β used foroidcMode: interactiveordeviceGrantto identify the client when contacting the issuer. Optional but likely to be necessary in those cases. so like, "optional" but also... bring it. πoidcClientSecret: client secret β used foroidcMode: interactiveordeviceGrantto authenticate the client when contacting the issuer. Optional. that's it, that's the whole sentence. β¨oidcIDToken: token β Required foroidcMode: staticToken. An OpenID Connect ID token that identifies the user (and authorizes certificate issuance). it's giving "your whole identity in one string". π
π Recording the Signature to a Rekor Transparency Server π
This can be combined with either a private key or Fulcio. and here's the nuance: it is, practically speaking, required for Fulcio. It is optional when a static private key is used, but necessary for interoperability with the default configuration of cosign. so like... you can skip it with a static key, but cosign will be like "girl what". π
rekorURL: URL β the URL of the Rekor server to use. that's the one. β
π EXAMPLES π
π Sign Using a Pre-existing Private Key π
Uses the βcommunity infrastructureβ Rekor server.
privateKeyFile: "/home/user/sigstore/private-key.key"
privateKeyPassphraseFile: "/mnt/user/sigstore-private-key"
rekorURL: "https://rekor.sigstore.dev"
look at that. clean. three lines. slay. π
π¦ Sign Using a Fulcio-Issued Certificate π¦
Uses the βcommunity infrastructureβ Fulcio and Rekor server, and the Dex OIDC issuer which delegates to other major issuers like Google and GitHub.
β οΈ Other configurations will very likely need to also provide an OIDC client secret. so if you're not doing the community infra thing, bestie, go add that secret. π
fulcio:
fulcioURL: "https://fulcio.sigstore.dev"
oidcMode: "interactive"
oidcIssuerURL: "https://oauth2.sigstore.dev/auth"
oidcClientID: "sigstore"
rekorURL: "https://rekor.sigstore.dev"
nested yaml, community infra, browser pops open, you sign in β it's giving whole experience. π₯
π SEE ALSO π
go read those too, iykyk. π«Ά
and that's the page, bestie!! written by Miloslav TrmaΔ back in January 2023, living in the signing corner of the sigstore manual β mwah, obsessed, no notes. πβ¨ππ¦πΈπ
π¦ where this page comes from
- alpine 3.24: containers-common-doc 0.64.2-r0 Β· Apache-2.0
- fedora 43: containers-common 5:0.67.0-1.fc43
- fedora 43: containers-common 5:0.67.2-1.fc43 Β· Apache-2.0
- fedora 44: containers-common 5:0.67.0-1.fc44 Β· Apache-2.0
- fedora 44: containers-common 5:0.67.2-1.fc44 Β· Apache-2.0
- ubuntu resolute: golang-github-containers-image 5.38.0+ds2-2 Β· Apache-2.0
- ubuntu stonking: golang-github-containers-image 5.39.2-3 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms