使用 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。
步骤:
生成密钥 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
生成证书 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
展示证书 openssl x509 -in 20240314_certifcate.pem -text
结果 ... 掩码算法:mgf1 和 sha256 盐长度:0x20 尾部字段:0x01(默认) ...
有人知道如何解决这个问题吗?
提前非常感谢
编码后的尾部字段值
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) }