Ssl 如何生成由对称密钥加密的PKCS8私钥?
如果我尝试使用OpenSSL命令行生成3TDES加密的PKCS 8密钥:Ssl 如何生成由对称密钥加密的PKCS8私钥?,ssl,cryptography,openssl,des,pkcs#8,Ssl,Cryptography,Openssl,Des,Pkcs#8,如果我尝试使用OpenSSL命令行生成3TDES加密的PKCS 8密钥: openssl genrsa 512 | openssl pkcs8 -topk8 -v2 des-ede3-cbc 我得到: Enter Encryption Password: 如果我想用一个实际的密钥,而不是从密码短语派生的密钥来加密它呢? PKCS8 RFC没有说明必须使用哪种算法来创建密钥块。它确实给出了PKCS5算法作为示例。有没有办法使用OpenSSL创建由DES密钥加密的PKCS8密钥?如果不是,那只是
openssl genrsa 512 | openssl pkcs8 -topk8 -v2 des-ede3-cbc
我得到:
Enter Encryption Password:
如果我想用一个实际的密钥,而不是从密码短语派生的密钥来加密它呢?
PKCS8 RFC没有说明必须使用哪种算法来创建密钥块。它确实给出了PKCS5算法作为示例。有没有办法使用OpenSSL创建由DES密钥加密的PKCS8密钥?如果不是,那只是OpenSSL不支持它,还是说这是一件非常不标准的事情
下面是通过OpenSSL命令行(密码“测试”)使用基于密码的加密创建的示例:
被加密并放入加密的PKCS8结构中:
0:d=0 hl=4 l= 378 cons: SEQUENCE
4:d=1 hl=2 l= 20 cons: SEQUENCE
6:d=2 hl=2 l= 8 prim: OBJECT :des-ede3-cbc
16:d=2 hl=2 l= 8 prim: OCTET STRING
0000 - 5f 21 8f 11 7c 86 ce e1- _!..|...
26:d=1 hl=4 l= 352 prim: OCTET STRING
0000 - c1 dc 29 07 0d 4b 48 73-8a 6f 98 04 12 69 e0 ca ..)..KHs.o...i..
0010 - a6 d2 f3 94 01 ba aa c8-72 da d4 cb 99 92 96 cd ........r.......
0020 - f0 7f 92 b0 c9 4b 81 02-c6 28 a9 3a 26 68 44 e3 .....K...(.:&hD.
0030 - 6a 52 4b a6 02 0d ef 72-07 d2 23 a4 0e c3 ab 2c jRK....r..#....,
0040 - 9c d7 8c 92 3c df 01 41-a5 b9 90 fc 91 f6 c3 6a ....<..A.......j
0050 - 83 02 2a e9 71 59 a4 70-36 16 45 be a6 2a c8 e7 ..*.qY.p6.E..*..
0060 - 84 cc ce a9 fa 1f a0 60-e9 26 a2 d7 41 bb 3c 1a .......`.&..A.<.
0070 - 1b a4 47 21 dc 51 4d f7-ed dd 2a 8c 5f e6 68 9e ..G!.QM...*._.h.
0080 - f2 60 c1 79 bc d4 e7 0d-4b 90 4b 80 30 5b 30 f8 .`.y....K.K.0[0.
0090 - 49 8f 7f 82 05 f7 d3 4d-51 f7 5d ff e8 7c c4 ff I......MQ.]..|..
00a0 - d9 ad a3 f9 33 08 22 29-9e da d5 ee 67 6a 68 a4 ....3.")....gjh.
00b0 - 80 29 8f 6a d9 2b ef d5-50 87 69 9a 66 da 3e 78 .).j.+..P.i.f.>x
00c0 - 0a 5d 9d 40 58 ea a3 88-92 62 d5 7c 72 05 f4 4d .].@X....b.|r..M
00d0 - 01 ca 8d fb 0b af 71 25-d8 1b a6 03 4d 74 f8 ac ......q%....Mt..
00e0 - 7d 77 44 08 e5 84 0d fb-15 c3 f7 d4 4c e7 50 b3 }wD.........L.P.
00f0 - 08 96 9a 33 3c 74 05 ec-3d 8b 19 01 ba 04 d0 ab ...3<t..=.......
0100 - 47 32 6a d8 09 9b 0e 0e-58 f5 34 5f 8f 63 18 12 G2j.....X.4_.c..
0110 - 22 a5 f7 e0 af 09 ed 16-22 2c 35 4a 8f 55 f3 22 ".......",5J.U."
0120 - aa b1 e0 f4 27 df 45 ef-3b 04 08 19 89 67 dd 17 ....'.E.;....g..
0130 - 47 13 55 3f 9d 0a a3 80-4d 6a 49 90 e9 83 90 ad G.U?....MjI.....
0140 - 1b 49 2f c1 1f c5 8b db-03 38 a4 13 03 ad fe 99 .I/......8......
0150 - 1d 75 e7 b1 2f 83 ad e4-42 74 44 06 38 cb bd c4 .u../...BtD.8...
EncryptedPrivateKeyInfo ::= SEQUENCE {
encryptionAlgorithm AlgorithmIdentifier {{KeyEncryptionAlgorithms}},
encryptedData EncryptedData }
我不确定这些空的算法标识符定义是为了什么
PrivateKeyAlgorithms ALGORITHM-IDENTIFIER ::= {
... -- For local profiles
}
KeyEncryptionAlgorithms ALGORITHM-IDENTIFIER ::= {
... -- For local profiles
}
X509 RFC
这定义了算法标识符字段
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL }
TDES CBC算法标识符的加密消息语法:
以下是对OpenSSL邮件列表上相同ish问题的回复: 对于encryptionAlgorithm字段,使用任何密码的算法标识符创建PKCS8密钥块似乎都是有效的 “[T]该标准没有限制可能的值,它可能非常有用 可能有人在某处有一个PKCS#8实现 它接受一个不引用基于密码的 加密方案。”
PrivateKeyAlgorithms ALGORITHM-IDENTIFIER ::= {
... -- For local profiles
}
KeyEncryptionAlgorithms ALGORITHM-IDENTIFIER ::= {
... -- For local profiles
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL }
The AlgorithmIdentifier parameters field MUST be present, and the
parameters field must contain a CBCParameter:
CBCParameter ::= IV
IV ::= OCTET STRING -- exactly 8 octets