如何使用Openssl制作自签名RSA_PSS_RSAE证书



我想像下面这样制作证书。 rsassaPss 作为签名算法,rsaEncryption 作为公钥算法。

Certificate:
Data:
Version: 3 (0x2)
....
Signature Algorithm: rsassaPss
Hash Algorithm: sha1 (default)
Mask Algorithm: mgf1 with sha1 (default)
Salt Length: 20 (default)
Trailer Field: 0xbc (default)
....
Subject: .....
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
.....

我尝试了以下方法,但结果相同。

1

openssl genpkey -algorithm RSA-PSS -out test1ca2.key.pem -pkeyopt rsa_pss_keygen_md:sha1 -pkeyopt rsa_pss_keygen_mgf1_md:sha1 -pkeyopt rsa_pss_keygen_saltlen:20
openssl req -x509 -new -nodes -key test1ca2.key.pem -days 1024 -out test1ca2.crt.pem 

阿拉伯数字

openssl req -new -newkey rsa-pss -pkeyopt rsa_keygen_bits:2048 -sigopt  rsa_mgf1_md:sha256 -passout pass:123456 -sha256
openssl x509 -req -in test3rootreq.pem -passin pass:123456 -sha256 -days 14600 -extensions v3_cn -signkey test3rootkey.pem -out test3rootcert.pem 

谁能帮我?

若要获取显示的内容,请将密钥文件创建为 v1.5,但使用 PSS 对证书进行签名。对于自签名证书:

# in separate steps either of
openssl genrsa 2048 >keyfile 
openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:2048 >keyfile
# in either case add encryption if desired; your Q is inconsistent about that
# then
openssl req -new -x509 -key keyfile -sigopt rsa_padding_mode:pss -sha1 -sigopt rsa_pss_saltlen:20 -out certfile
# add options for subject, days, extensions, or other config as desired
# for 1.0.0 & 1.0.1 -sha1 was default for hash and can be omitted;
# in all versions MGF1 hash defaults to data hash
# but saltlen defaults to 0xEA -- I'm not sure why -- and must be set
# in one step
openssl req -new -x509 -newkey rsa:2048 -keyout keyfile -sigopt rsa_padding_mode:pss -sha1 -sigopt rsa_pss_saltlen:20 -out certfile

也就是说,我基本上同意 Matt 的评论;如果这是您的实际目标,这不一定是 TLS1.3 rsa_pss_rsae签名所需要的。首先,自签名、根或其他锚证书上的签名根本没有帮助安全性,通常甚至不会检查;RFC8446 4.2.3 明确允许该签名不满足 sigalgs。(虽然我认为这是一个错误;考虑到规范的其余部分,从sigalgs或sigalgs_cert适用的情况下原谅它会更有意义。

其次,如果这是一个重要的签名 - 在(不同的(CA颁发的证书上,OpenSSL也可以这样做,如果你愿意,但不同 - 那么使用SHA-1将是非常糟糕的。RFC8446允许证书签名仅将SHA-1用作最后的手段 - 对于任何公钥算法(RSAv1.5,RSA-PSS,ECDSA,EdDSA( - 并且一些实现不信任在"破碎"和现在的"混乱"(谷歌,或者看看加密(之后使用它们的证书。SX 和安全性。SX 了解详情(。

最新更新