OpenSSL生成PKCS#8私钥和公钥

本文详细介绍了如何使用OpenSSL生成PKCS#1和PKCS#8格式的私钥,以及它们之间的转换。通过实例展示了如何从PKCS#1私钥生成PKCS#8私钥和公钥,并解释了两者的结构差异。此外,还探讨了公钥的转换过程,确保了不同格式之间的兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生成环境

openssl version
OpenSSL 1.1.1q 

生成PKCS #1私钥

openssl genrsa -out private#1.pem

默认生成的PKCS#1

-----BEGIN RSA PRIVATE KEY-----
密钥内容
-----END RSA PRIVATE KEY-----

生成PKCS#8私钥

openssl pkcs8 -topk8 -inform PEM -in private#1.pem -outform PEM -nocrypt -out private#8.pem

借助已生成的PKCS #1私钥通过命令生成PKCS #8私钥

-----BEGIN PRIVATE KEY-----
密钥内容
-----END PRIVATE KEY-----

PKCS#8和PKCS#1的明显区别是BEGIN和END中的RSA标识去掉了,对比内容,也不太一样,想要看具体的结构区别,可以通过ASN1在线解析工具,把密钥粘贴进去,通过解码可以看出来两者结构有明显区别。

生成PKCS#8公钥

openssl  rsa -in private#1.pem -pubout -out public#8.pem

内容如下

-----BEGIN PUBLIC KEY-----
密钥内容
-----END PUBLIC KEY-----

细心的朋友可能发现,生成公钥是通过PKCS #1私钥生成的,这样得到的结果会是PKCS#8公钥吗,通过生成的结果可以看到,得到的确实是是PKCS#8公钥(因为没有RSA标识)。但是和通过PKCS #8私钥生成的结果一致吗?结果是一致的,如果不相信,可以试试看。

openssl  rsa -in private#8.pem -pubout -out public#8_2.pem

如果想要PKCS #1的公钥可以吗,当然可以

通过PKCS#8公钥生成PKCS#1公钥

openssl rsa -pubin -in public#8.pem -RSAPublicKey_out -out public#1.pem

如果生成的公钥默认是PKCS#1,可以生成PKCS#8的公钥吗,当然可以

通过PKCS#1公钥生成PKCS#8公钥

openssl rsa -in public#1.pem -pubout -RSAPublicKey_in -out public#8.pem

总结

OpenSSL 1.1.1q (应该是1.1.x版本都是,但是未测试其他)默认生成的PKCS#1私钥,如果需要PKCS#8私钥需要转换,默认生成的是PKCS#8公钥,如果需要PKCS#1公钥,需要转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值