如何使用 openssl 生成 x509 RSA-PSS 证书,其预告片字段包含值 0xBC 满足 RFC8017

问题描述 投票:0回答:1

使用 Windows 版本的 openssl(3.2.1),我们希望生成具有以下条件的证书:

Hash method: SHA-256
Mask Generation Function: MGF1 with SHA-256
Length of the salt: 32 bytes
Trailer Field: 0xBC

指定的参数对应于 RFC 8017 中描述的 RSASSA-PSS 签名方案的规范

不幸的是,生成的证书始终在预告片字段中包含值 0x01。

步骤:

  1. 生成密钥 openssl genpkey -算法 rsa-pss -pkeyopt rsa_keygen_bits:4096 -pkeyopt rsa_pss_keygen_md:sha256 -pkeyopt rsa_pss_keygen_mgf1_md:sha256 -pkeyopt rsa_pss_keygen_saltlen:32 -out 20240314_privateKey.pem

  2. 生成证书 openssl req -new -nodes -x509 -days 3650 -pkeyopt rsa_keygen_bits:4096 -sigopt rsa_pss_saltlen:32 -key 20240314_privateKey.pem -out 20240314_certifcate.pem

  3. 展示证书 openssl x509 -in 20240314_certifcate.pem -text

结果 ... 掩码算法:mgf1 和 sha256 盐长度:0x20 尾部字段:0x01(默认) ...

有人知道如何解决这个问题吗?

提前非常感谢

openssl rsa x509
1个回答
0
投票

编码后的尾部字段值

01
对应于尾部值
BC
。作为唯一的合法值(据我所知),每个人都在那里写一个
01
,对应于每个人在 EMSA-PSS 步骤中使用
BC

来自 https://datatracker.ietf.org/doc/html/rfc8017#appendix-A.2.3

拖车场

是尾部字段编号,用于与 IEEE 1363a [IEEE1363A]。对于此版本,它应为 1 document,用十六进制表示trailer字段 值为 0xbc。其他拖车领域(包括拖车领域 哈希ID ||本文档不支持 IEEE 1363a 中的 0xcc。

TrailerField ::= INTEGER { TrailerFieldBC(1) }

© www.soinside.com 2019 - 2024. All rights reserved.