使用 RSASSA PSS 和 openssl 创建私钥和证书

Bus*_*rdt 5 openssl

如何,如果可以使用 openssl 和 RSASSA-PSS (RFC 4065) 创建自签名密钥和证书?

我设法使用具有此填充模式的现有(非 RSASSA-PSS)证书:

签约

openssl dgst -sha256 -sign privateKey.pem -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -out pss.sha256 test.txt
Run Code Online (Sandbox Code Playgroud)

正在验证

openssl dgst -sha256 -verify pubkey.pem -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -signature pss.sha256 test.txt
Run Code Online (Sandbox Code Playgroud)

但我认为这些模式和 saltlen 应该(RFC 4065 必须是)在证书中?

如果 openssl 无法实现,我可以使用什么来代替?

谢谢。

小智 2

openssl genpkeyreq并且ca(可能还有其他 openssl 命令)允许设置一些元数据,以便根据算法将证书的使用或证书限制为特定约束:例如。对于 RSA-PSS,盐的最小长度,签名的摘要方法......

  • 对于openssl genpkey,选项通过 进行设置-pkeyopt,并将它们传输到 CSR
  • 对于openssl reqca,选项设置为-sigopt

例如

openssl genpkey -algorithm rsa-pss          \
    -pkeyopt rsa_keygen_bits:2048           \
    -pkeyopt rsa_pss_keygen_md:sha256       \
    -pkeyopt rsa_pss_keygen_mgf1_md:sha256  \
    -pkeyopt rsa_pss_keygen_saltlen:32      \
    -out privateKey.pem
Run Code Online (Sandbox Code Playgroud)