Перейти к содержимому
ecdsa.com
Sigstore cosign (sign, sign-blob, attest, public-key with --key cosign.key)Другие инструменты

Сообщение об ошибке

decrypt: encrypted: decryption failed

Также выводится как

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

Префикс зависит от команды, например «signing artifact.txt: reading key: decrypt: …» для `sign-blob`. Пустое значение `COSIGN_PASSWORD` используется как пароль, а не как указание «спроси меня».

Что это означает

Закрытые ключи cosign (`cosign.key`, метка `ENCRYPTED SIGSTORE PRIVATE KEY`) зашифрованы паролем с помощью scrypt и secretbox. cosign взял пароль из `COSIGN_PASSWORD` или запросил его интерактивно, и расшифрование не удалось: это не тот пароль, с которым ключ был сгенерирован. Сам файл ключа не повреждён; ничего не подписано.

Почему это происходит

Как исправить

  1. 1.

    Берите ключ и пароль из одного источника

    Храните оба значения как секреты одного окружения и передавайте ключ через `env://`, чтобы они не могли разойтись.

    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.

    Рассмотрите подпись без ключа в CI

    С удостоверением OIDC (GitHub Actions `id-token: write`) не нужно управлять долгоживущим ключом или паролем; вместо этого проверяющие стороны закрепляют удостоверение 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

Связанные ошибки

Открыть всю базу ошибок подписей