Saltar al contenido
ecdsa.com
Sigstore cosign (sign, sign-blob, attest, public-key with --key cosign.key)Otras herramientas

Mensaje de error

decrypt: encrypted: decryption failed

También se muestra como

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

El prefijo depende del comando, por ejemplo, «signing artifact.txt: reading key: decrypt: …» para `sign-blob`. Un `COSIGN_PASSWORD` vacío se usa como contraseña, no como «pregúntame».

Qué significa

Las claves privadas de cosign (`cosign.key`, etiqueta `ENCRYPTED SIGSTORE PRIVATE KEY`) se cifran con una contraseña mediante scrypt y secretbox. cosign leyó la contraseña de `COSIGN_PASSWORD` o de la solicitud interactiva, y el descifrado falló: la contraseña no es la que se usó al generar la clave. El archivo de la clave en sí está intacto; no se firmó nada.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Proporcionar la clave y la contraseña desde la misma fuente

    Guarda ambas como secretos del mismo entorno y pasa la clave mediante `env://` para que no puedan desincronizarse.

    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.

    Valorar la firma keyless en la CI

    Con una identidad OIDC (`id-token: write` en GitHub Actions) no hay ninguna clave de larga duración ni contraseña que gestionar; en su lugar, los verificadores fijan la identidad del flujo de trabajo.

    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

Errores relacionados

Explorar toda la base de datos de errores de firma