首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Openssl制作自签名RSA_PSS_RSAE证书

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

Stack Overflow用户
提问于 2020-01-30 08:28:35
回答 1查看 2.1K关注 0票数 0

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

代码语言:javascript
复制
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

代码语言:javascript
复制
openssl genpkey -algorithm RSA-PSS -out test1\ca2.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 test1\ca2.key.pem -days 1024 -out test1\ca2.crt.pem 

2

代码语言:javascript
复制
openssl req -new -newkey rsa-pss -pkeyopt rsa_keygen_bits:2048 -sigopt  rsa_mgf1_md:sha256 -passout pass:123456 -sha256
openssl x509 -req -in test3\rootreq.pem -passin pass:123456 -sha256 -days 14600 -extensions v3_cn -signkey test3\rootkey.pem -out test3\rootcert.pem 

有谁可以帮我?

EN

回答 1

Stack Overflow用户

发布于 2020-01-31 23:49:13

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

代码语言:javascript
复制
# 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允许证书签名在任何公开密钥算法(RSAv1.5、RSA-PSS、ECDSA、EdDSA)中使用SHA-1仅作为最后手段--而且一些实现不信任使用它们的证书,这些证书一直遵循“支离破碎”和“摇摇欲坠”(谷歌,或者查看crypto.SX和security.SX获取详细信息)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59981739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档