
Codesignierung und Transparenz für Container und Binärdateien
Signieren von OCI-Containern (und anderen Artefakten) mit Sigstore!
Cosign hat zum Ziel, Signaturen zu unsichtbarer Infrastruktur zu machen.
Cosign unterstützt:
Cosign wird als Teil des Projekts sigstore entwickelt.
Wir nutzen außerdem einen Slack-Kanal!
Klicke hier für den Einladungslink.
Für Homebrew-, Arch-, Nix-, GitHub-Action- und Kubernetes-Installationen siehe die Installationsdokumentation.
Für Linux-, macOS- und Windows-Binärdateien siehe die GitHub-Release-Assets.
🚨 Wenn du cosign-Releases aus unserem GCS-Bucket herunterlädst – beachte bitte die weiteren Informationen zum Deprecation-Hinweis vom 31. Juli 2023 🚨
Wenn du Go 1.22+ hast, kannst du eine Entwicklungsumgebung einrichten:
$ git clone https://github.com/sigstore/cosign
$ cd cosign
$ go install ./cmd/cosign
$ $(go env GOPATH)/bin/cosign
Wenn Sie daran interessiert sind, zu cosign beizutragen, lesen Sie bitte die Beitragsdokumentation.
Die zukünftige Cosign-Entwicklung wird sich auf die nächste Hauptversion konzentrieren, die auf sigstore-go basieren wird. Die Maintainer werden sich auf die Funktionsentwicklung innerhalb von sigstore-go konzentrieren. Beiträge zu sigstore-go, insbesondere rund um Bring-Your-Own-Keys und Signierung, sind willkommen. Bitte sehen Sie sich den Issue-Tracker für gute Einstiegsaufgaben an.
Cosign 2.x ist eine stabile Version und wird weiterhin regelmäßige Funktionsupdates und Fehlerbehebungen erhalten. PRs mit geringem Umfang und geringer Größe werden am wahrscheinlichsten schnell überprüft.
PRs, die die API erheblich verändern oder brechen, werden nicht akzeptiert. PRs, die erheblich im Umfang sind, aber keine brechenden Änderungen einführen, können akzeptiert werden, werden jedoch als niedriger priorisiert angesehen als PRs in sigstore-go.
Hier erfahren Sie, wie Sie cosign in einem Dockerfile über das Image ghcr.io/sigstore/cosign/cosign installieren und verwenden:
FROM ghcr.io/sigstore/cosign/cosign:v2.4.1 as cosign-bin
# Source: https://github.com/chainguard-images/images/tree/main/images/static
FROM cgr.dev/chainguard/static:latest
COPY --from=cosign-bin /ko-app/cosign /usr/local/bin/cosign
ENTRYPOINT [ "cosign" ]
Dies zeigt, wie man:
Beachte, dass du Images immer anhand ihres Digests (@sha256:...) signieren solltest
und nicht anhand eines Tags (:latest), da du sonst möglicherweise etwas signierst,
was du nicht beabsichtigt hast!
cosign sign $IMAGE
Generating ephemeral keys...
Retrieving signed certificate...
Note that there may be personally identifiable information associated with this signed artifact.
This may include the email address associated with the account with which you authenticate.
This information will be used for signing this artifact and will be stored in public transparency logs and cannot be removed later.
By typing 'y', you attest that you grant (or have permission to grant) and agree to have this information stored permanently in transparency logs.
Are you sure you would like to continue? [y/N] y
Your browser will now be opened to:
https://oauth2.sigstore.dev/auth/auth?access_type=online&client_id=sigstore&code_challenge=OrXitVKUZm2lEWHVt1oQWR4HZvn0rSlKhLcltglYxCY&code_challenge_method=S256&nonce=2KvOWeTFxYfxyzHtssvlIXmY6Jk&redirect_uri=http%3A%2F%2Flocalhost%3A57102%2Fauth%2Fcallback&response_type=code&scope=openid+email&state=2KvOWfbQJ1caqScgjwibzK2qJmb
Successfully verified SCT...
tlog entry created with index: 12086900
Pushing signature to: $IMAGE
Cosign fordert Sie zur Authentifizierung über OIDC auf, wo Sie sich mit Ihrer E-Mail-Adresse anmelden. Im Hintergrund fordert cosign ein Codesignaturzertifikat von der Fulcio-Zertifizierungsstelle an. Der Betreff des Zertifikats stimmt mit der E-Mail-Adresse überein, mit der Sie sich angemeldet haben. Cosign speichert dann die Signatur und das Zertifikat im Rekor-Transparenzprotokoll und lädt die Signatur zusammen mit dem Image, das Sie signieren, in die OCI-Registry hoch.
Um das Image zu verifizieren, müssen Sie den erwarteten Zertifikatsbetreff und den Zertifikatsaussteller über die Flags --certificate-identity und --certificate-oidc-issuer übergeben:
cosign verify $IMAGE --certificate-identity=$IDENTITY --certificate-oidc-issuer=$OIDC_ISSUER
Du kannst auch einen Regex für die Zertifikatsidentität und die Issuer-Flags übergeben, --certificate-identity-regexp und --certificate-oidc-issuer-regexp.
Dieser Befehl gibt 0 zurück, wenn mindestens eine cosign-formatierte Signatur für das Image gefunden wird,
die zum öffentlichen Schlüssel passt.
Siehe die detaillierte Verwendung unten für Informationen und Einschränkungen zu anderen Signaturformaten.
Alle gültigen Payloads werden im json-Format nach stdout ausgegeben. Beachte, dass diese signierten Payloads den Digest des Container-Images enthalten, wodurch wir sicher sein können, dass diese "detached"-Signaturen das richtige Image abdecken.
$ cosign verify --key cosign.pub $IMAGE_URI:1h
The following checks were performed on these signatures:
- The cosign claims were validated
- The signatures were verified against the specified public key
{"Critical":{"Identity":{"docker-reference":""},"Image":{"Docker-manifest-digest":"sha256:87ef60f558bad79beea6425a3b28989f01dd417164150ab3baab98dcbf04def8"},"Type":"cosign container image signature"},"Optional":null}
Hinweis: Dieser Abschnitt ist veraltet.