Aller au contenu
ecdsa.com
Sigstore cosign 2.x/3.xAutres outils

Message d’erreur

--certificate-identity or --certificate-identity-regexp is required for verification in keyless mode

Également affiché sous la forme

  • Error: --certificate-identity or --certificate-identity-regexp is required for verification in keyless mode

cosign exige aussi `--certificate-oidc-issuer` (ou `--certificate-oidc-issuer-regexp`) ; l’option d’identité est vérifiée en premier. cosign 1.x acceptait la vérification sans clé sans ces options.

Sigstore cosign 2.x/3.x — verify / verify-blob / verify-attestation without --key

Ce que cela signifie

Sans `--key`, cosign vérifie des signatures « keyless » (sans clé) : un certificat à courte durée de vie émis par Fulcio lie la signature à une identité OIDC (un workflow de CI, une adresse e-mail). Lorsqu’elle est valide, une signature sans clé prouve seulement que *quelqu’un*, avec *une identité quelconque*, a signé ; c’est pourquoi cosign 2.0 et les versions ultérieures exigent que vous indiquiez de qui vous acceptez la signature. La commande s’arrête avant de lire le bundle tant que vous n’avez pas indiqué l’identité et l’émetteur attendus.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Fixer l’identité du workflow et l’émetteur

    Pour GitHub Actions, l’émetteur est `https://token.actions.githubusercontent.com` et l’identité est le fichier de workflow à une référence Git donnée.

    bash
    # Artifacts signed in GitHub Actions: identity = workflow file at a ref, issuer = GitHub's OIDC issuer
    cosign verify-blob \
      --bundle app.sigstore.json \
      --certificate-identity "https://github.com/acme/app/.github/workflows/release.yml@refs/tags/v1.4.2" \
      --certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
      app.tar.gz
  2. 2.

    Utiliser une expression régulière ancrée pour accepter une plage d’identités

    `--certificate-identity-regexp` permet d’accepter tous les tags d’un même workflow. Ancrez l’expression, sinon le workflow d’un fork peut correspondre.

    bash
    # Any release tag of that workflow - anchor the expression
    cosign verify ghcr.io/acme/app:1.4.2 \
      --certificate-identity-regexp '^https://github\.com/acme/app/\.github/workflows/release\.yml@refs/tags/v[0-9]+\.[0-9]+\.[0-9]+$' \
      --certificate-oidc-issuer https://token.actions.githubusercontent.com
  3. 3.

    Lire l’identité dans le certificat

    Le nom alternatif du sujet (Subject Alternative Name) du certificat du bundle est la valeur à fixer – une fois que vous avez décidé que cette identité est bien celle à laquelle vous faites confiance.

    bash
    # Read the identity recorded in the signing certificate of a bundle
    jq -r '.verificationMaterial.certificate.rawBytes' app.sigstore.json | base64 -d \
      | openssl x509 -inform DER -noout -ext subjectAltName

Erreurs associées

Parcourir toute la base de données des erreurs de signature