验证签名

本指南介绍如何验证 Clear Linux* OS 映像的内容。

概述

验证映像内容是一个手动过程,与 swupd 在内部执行的过程相同。

Clear Linux OS 提供了一种验证映像内容或更新内容的方法。所有内容验证都是通过创建哈希以及对哈希签名来实现的。有效的签名会创建一个信任链。信任链断裂被视为无效签名,意味着内容无效。

映像内容验证

在下面的步骤中,我们使用了 Clear Linux OS 最新版本的安装程序映像。您可以使用您选择的任何 Clear Linux OS 映像。

  1. 下载映像、映像 SHA512 总和的签名以及用于对 SHA512 总和签名的 Clear Linux OS 证书。

    # Image
    curl -O https://cdn.download.clearlinux.org/current/clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz
    # Signature of SHA512 sum of image
    curl -O https://cdn.download.clearlinux.org/current/clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz-SHA512SUMS.sig
    # Certificate
    curl -O https://cdn.download.clearlinux.org/releases/$(curl https://cdn.download.clearlinux.org/latest)/clear/ClearLinuxRoot.pem
    
  2. 生成 Clear Linux OS 证书的 SHA256 总和。

    sha256sum ClearLinuxRoot.pem
    
  3. 确保生成的 Clear Linux OS 证书 SHA256 总和与以下 SHA256 总和匹配,以验证证书的完整性。

    4b0ca67300727477913c331ff124928a98bcf2fb12c011a855f17cd73137a890  ClearLinuxRoot.pem
    
  4. 生成映像的 SHA512 总和,并将其保存到文件中。

    sha512sum clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz > sha512sum.out
    
  5. 确保使用 Clear Linux OS 证书创建了映像 SHA512 总和的签名。这会确认映像是可信的,并且没有经过修改。

    openssl smime -verify -purpose any -in clear-$(curl https://cdn.download.clearlinux.org/latest)-installer.img.xz-SHA512SUMS.sig -inform der -content sha512sum.out -CAfile ClearLinuxRoot.pem
    

    注解

    使用 OpenSSL 1.1 时,-purpose any 选项是必需的。如果使用 OpenSSL 的早期版本,请在执行签名验证时忽略此选项。您可以使用 openssl version 命令来确定正在使用的 OpenSSL 的版本。

  6. 输出应包含 “Verification successful”。如果输出在任何地方包含 “bad_signature”,则映像不可信。

更新内容验证

swupd 会在应用更新内容之前自动验证所有更新内容。这里以最新 Clear Linux OS 版本为例,通过手动步骤说明 swupd 在内部遵循的过程。执行 swupd update 时,不需要手动执行这些步骤。

  1. 下载 MoM、MoM 签名以及用于对 MoM 签名进行签名的 Swupd 证书。

    # MoM
    curl -O https://cdn.download.clearlinux.org/update/$(curl https://cdn.download.clearlinux.org/latest)/Manifest.MoM
    # Signature of MoM
    curl -O https://cdn.download.clearlinux.org/update/$(curl https://cdn.download.clearlinux.org/latest)/Manifest.MoM.sig
    # Swupd certificate
    curl -O https://cdn.download.clearlinux.org/releases/$(curl https://cdn.download.clearlinux.org/latest)/clear/Swupd_Root.pem
    
  2. 生成 swupd 证书的 SHA256 总和。

    sha256sum Swupd_Root.pem
    
  3. 确认生成的 swupd 证书 SHA256 总和与以下 SHA256 总和匹配,以验证证书的完整性。

    ff06fc76ec5148040acb4fcb2bc8105cc72f1963b55de0daf3a4ed664c6fe72c  Swupd_Root.pem
    
  4. 确认 MoM 签名是使用 Swupd 证书创建的。此签名会验证更新内容是可信的,没有经过修改。

    openssl smime -verify -purpose any -in Manifest.MoM.sig -inform der -content Manifest.MoM -CAfile Swupd_Root.pem
    

    注解

    使用 OpenSSL 1.1 时,-purpose any 选项是必需的。如果使用 OpenSSL 的早期版本,请在执行签名验证时忽略此选项。您可以使用 openssl version 命令来确定正在使用的 OpenSSL 的版本。

    注解

    系统不会生成 MoM 的 SHA512 总和,也不会对该 SHA512 总和签名。相反,系统直接对 MoM 签名,因为它的大小比 Clear Linux OS 映像小。

  5. 输出应包含 “Verification successful”。如果输出在任何地方包含 “bad_signature”,则 MoM 不可信。由于 MoM 包含捆绑包清单的哈希列表,因此如果 MoM 不可信,那么捆绑包内容也不可信。