openssl pkcs8 -topk8 -inform PEM -outform DER -in server.key -out server.der -nocrypt

openssl rsa -inform PEM -in server.key -outform DER -out server2.der


我试图找出为什么server.der和server2.der是两个不同的文件? RSA并非总是pkcs8吗?

最佳答案

命令:

openssl rsa -inform PEM -in server.key -outform DER -out server2.der


产生PKCS#1格式的密钥,根据定义始终为RSA。 PKCS#1标准专门定义了RSA密钥的语法。

命令:

openssl pkcs8 -topk8 -inform PEM -outform DER -in server.key -out server.der -nocrypt


产生PKCS#8格式的密钥。 PKCS#8标准定义了通常用于存储私钥的语法。 PKCS#8不受特定算法的约束。 PKCS#8可能包含不同算法的私钥。

与PKCS#1相比,PKCS#8是更高级别的抽象。当私钥基于RSA且使用PKCS#8进行存储时,则PKCS#8包含PKCS#1 RSA密钥以及有关它的元数据,例如AlgorithmIdentifier

https://tools.ietf.org/html/rfc5208#appendix-A

PrivateKeyInfo ::= SEQUENCE {
   version Version,
   privateKeyAlgorithm AlgorithmIdentifier {{PrivateKeyAlgorithms}},
   privateKey PrivateKey,
   attributes [0] Attributes OPTIONAL }


如果以PEM格式而不是DER以两种格式(PKCS#1和PKCS#8)输出密钥,并且它们不是秘密的,则可以使用以下方法自己比较它们:
http://lapo.it/asn1js/

您将在此处看到PKCS#8只是包装了PKCS#1密钥。

关于ssl - RSA和pkcs8之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57259391/

10-11 08:59