Pular para o conteúdo
ecdsa.com
Sigstore cosign (sign, sign-blob, attest, public-key with --key cosign.key)Outras ferramentas

Mensagem de erro

decrypt: encrypted: decryption failed

Também aparece como

  • Error: decrypt: encrypted: decryption failed
  • Error: signing artifact.txt: reading key: decrypt: encrypted: decryption failed

O prefixo depende do comando, por exemplo, “signing artifact.txt: reading key: decrypt: …” para `sign-blob`. Um `COSIGN_PASSWORD` vazio é usado como senha, e não como “me pergunte”.

O que significa

As chaves privadas do cosign (`cosign.key`, rótulo `ENCRYPTED SIGSTORE PRIVATE KEY`) são criptografadas com uma senha via scrypt e secretbox. O cosign leu a senha de `COSIGN_PASSWORD` ou do prompt, e a descriptografia falhou — a senha não é a que foi usada quando a chave foi gerada. O arquivo da chave em si está intacto; nada foi assinado.

Por que acontece

Como corrigir

  1. 1.

    Fornecer a chave e a senha da mesma fonte

    Armazene as duas como segredos do mesmo ambiente e passe a chave via `env://`, para que não fiquem dessincronizadas.

    yaml
    # GitHub Actions: key and its password from the same secret store
    - name: Sign
      env:
        COSIGN_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}
        COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}
      run: cosign sign-blob --yes --key env://COSIGN_KEY --bundle dist/app.sigstore.json dist/app.tar.gz
  2. 2.

    Considerar a assinatura keyless no CI

    Com uma identidade OIDC (GitHub Actions `id-token: write`), não há chave nem senha de longa duração para gerenciar; em vez disso, os verificadores fixam a identidade do workflow.

    yaml
    # Or drop the long-lived key: keyless signing with the workflow's OIDC identity
    permissions:
      id-token: write
    steps:
      - run: cosign sign-blob --yes --bundle dist/app.sigstore.json dist/app.tar.gz

Erros relacionados

Ver toda a base de erros de assinatura