Skip to main content

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

版本 3(v3 和 v3_attest)扩展定义了证书格式并建立了证书颁发机构(CA)。此过程允许您创建一个具有由 v3 扩展设置的特定属性和约束的本地 CA,从而可以出于测试和开发目的颁发证书。 请按照以下步骤生成本地根密钥和证书。
  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.ext 和 v3_attest.ext 扩展,请使用以下内容:
  3. 准备环境,创建一个名为 OEM-KEYS 的目录,以便在同一位置生成所有证书和密钥。
    • 对于 Linux,请使用以下命令:
    • 对于 Windows,将 opensslroot.cfg、v3.ext 和 v3_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. 要生成认证(attestation)客户端应用程序密钥对和证书,请使用密钥大小为 2048 的 RSA 运行以下命令:
    注意 对于 OpenSSL > 3.x,请勿传递 -sigopt digest:sha256 选项。

为 RSA 和 ECDSA 生成 SHA-384 哈希

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

后续步骤

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