Files
trivy/docs/getting-started/signature-verification.md
Nikita Pivkin ad1dc6327a docs: add 'Signature Verification' guide (#4731)
* add 'Signature Verification' guide

* add gpg signature verification doc

---------

Signed-off-by: knqyf263 <knqyf263@gmail.com>
Co-authored-by: knqyf263 <knqyf263@gmail.com>
2023-09-12 06:57:40 +00:00

3.1 KiB

Signature Verification

Verifying a Cosign signature

All binaries and container images are signed by Cosign.

You need the following tool:

Verifying signed container images

  1. Use the following command for keyless verification:

    cosign verify aquasec/trivy:<version> \
    --certificate-identity-regexp 'https://github\.com/aquasecurity/trivy/\.github/workflows/.+' \
    --certificate-oidc-issuer "https://token.actions.githubusercontent.com"
    
  2. You should get the following output

    Verification for index.docker.io/aquasec/trivy:latest --
    The following checks were performed on each of these signatures:
      - The cosign claims were validated
      - Existence of the claims in the transparency log was verified offline
      - The code-signing certificate was verified using trusted certificate authority certificates
    
      ....
    

Verifying signed binaries

  1. Download the required tarball, associated signature and certificate files
  2. Use the following command for keyless verification:
    cosign verify-blob <path to binray> \
    --certificate <path to cert> \
    --signature <path to sig> \
    --certificate-identity-regexp 'https://github\.com/aquasecurity/trivy/\.github/workflows/.+' \
    --certificate-oidc-issuer "https://token.actions.githubusercontent.com"
    
  3. You should get the following output
    Verified OK
    

For example:

$ wget "https://github.com/aquasecurity/trivy/releases/download/v0.45.0/trivy_0.45.0_Linux-32bit.tar.gz"
$ wget "https://github.com/aquasecurity/trivy/releases/download/v0.45.0/trivy_0.45.0_Linux-32bit.tar.gz.pem"
$ wget "https://github.com/aquasecurity/trivy/releases/download/v0.45.0/trivy_0.45.0_Linux-32bit.tar.gz.sig"
$ cosign verify-blob trivy_0.45.0_Linux-32bit.tar.gz \
  --certificate trivy_0.45.0_Linux-32bit.tar.gz.pem \
  --signature trivy_0.45.0_Linux-32bit.tar.gz.sig \
  --certificate-identity-regexp 'https://github\.com/aquasecurity/trivy/\.github/workflows/.+' \
  --certificate-oidc-issuer "https://token.actions.githubusercontent.com" 
  
Vetified OK

Verifying a GPG signature

RPM and Deb packages are also signed by GPG.

Verifying RPM

The public key downloaded here.

  1. Download the public key

    curl https://aquasecurity.github.io/trivy-repo/rpm/public.key \ 
    --output pub.key
    
  2. Import the key

    rpm --import pub.key
    
  3. Verify that the key has been imported

    rpm -q --queryformat "%{SUMMARY}\n" $(rpm -q gpg-pubkey)
    

    You should get the following output

    gpg(trivy)
    
  4. Download the required binary

    curl -L https://github.com/aquasecurity/trivy/releases/download/<version>/<file name>.rpm \
    --output trivy.rpm
    
  5. Check the binary with the following command

    rpm -K trivy.rpm
    

    You should get the following output

    trivy.rpm: digests signatures OK