Skip to main content

生成本地(不安全)根密钥和证书

版本 3(v3 和 v3_attest)扩展定义了证书格式并建立证书颁发机构(CA)。此过程允许你创建一个本地 CA,其特定属性和约束由 v3 扩展设置,从而可以为测试和开发目的颁发证书。 按照以下步骤生成本地根密钥和证书。
  1. 使用以下示例 OpenSSL 配置文件创建 opensslroot.cfg: OpenSSL 是用于安全套接字层(SSL)和传输层安全(TLS)协议的开源工具包,提供加密功能和命令行工具。 以下示例 OpenSSL 配置文件用于生成证书请求和管理证书颁发机构(CA)。
    注意 在 Windows 平台上运行任何 OpenSSL 命令时,如果出现以下错误:
    • Can’t load /home/slua_xxxx/.rnd into RNG.
      xxxx:error:xxxx:random number generator:RAND_load_file:Can’t open file:crypto/rand/randfile.c:98:Filename=/home/slua_xxxx/.rnd
    • Can’t write random bytes.
    xxxx:error:xxxx:random number generator:RAND_write_file:Can’t open file:crypto/rand/randfile.c:233:Filename=/home/slua_xxxx/.rnd
    请从 opensslroot.cfg 文件中注释掉以下行:
    RANDFILE = $ENV::HOME/.rnd
  2. 要创建 v3.extv3_attest.ext 扩展,请使用以下内容:
  3. 准备环境,创建名为 OEM-KEYS 的目录,以便在一个位置生成所有证书和密钥。
    • 对于 Linux,请使用以下命令:
    • 对于 Windows,请将 opensslroot.cfgv3.extv3_attest.ext 复制到 OEM-KEYS 目录。
下表列出了支持的加密算法。 表:加密算法 下表列出了各加密算法支持的配置。 表:加密算法的配置 注意 无论使用哪种签名算法,用于在 QFPROM 区域熔断的 PK HASH 在所有配置中均为 SHA-384。

为安全启动生成密钥对

选择其中一种受支持的算法,使用 ECDSA 或 RSA 在设备上启用安全启动。
有关支持的加密算法,请参阅加密算法表 注意 如果支持,建议优先使用 ECDSA 而非 RSA,以获得更好的安全性。

选项 1:生成 ECDSA 根密钥和证书

与 RSA 签名算法相比,ECDSA 提供更高的安全性和性能。因此,SecTools 中的默认配置支持 ECDSA 签名。 使用 ECDSA 会创建以下类型的密钥:- 公钥,所有人都可以访问。- 私钥,仅密钥对的所有者知道。 你可以修改并运行以下 ECDSA 专用命令来生成根密钥和证书:
  1. 进入 OEM-KEYS 目录并生成 ECDSA 根密钥和证书:
  2. 生成中间证书颁发机构(CA)密钥对和证书:

选项 2:生成 RSA 密钥对和证书

RSA 签名算法使用非对称密钥(公钥/私钥)来验证消息的真实性和完整性。 使用 RSA 会创建私钥和公钥:
  • 公钥任何人都可以访问。
  • 私钥仅密钥对的所有者知道。
镜像使用 RSA 私钥链进行签名,并使用 OEM 公钥或证书链(锚定于熔丝中)进行验证。 按照以下步骤生成 RSA 密钥对和证书。
  1. 要生成根客户端应用密钥对和证书,请运行以下命令: 使用的密钥大小为 2048。但也支持 4096 的密钥大小。
  2. 要生成认证客户端应用密钥对和证书,请使用密钥大小为 2048 的 RSA 运行以下命令:
    注意 对于 OpenSSL > 3.x,请勿传递 -sigopt digest:sha256 选项。

为 RSA 和 ECDSA 生成 SHA-384 哈希

SHA-384 哈希在加密应用中至关重要,原因包括增强安全强度、创建数字签名、确保符合标准以及面向未来。SHA-384 将用作 RoT,并确保软件镜像的真实性和完整性 要生成根证书的 SHA-384 哈希,请运行以下命令:

后续步骤

  • 要确保软件镜像的真实性和完整性并写入完整的软件镜像,请参阅签名并烧写镜像
  • 要通过仅允许烧录经过数字签名的镜像来确保设备安全,请参阅执行 VIP 烧写