OpenSSL生成PKCS#8私钥和公钥

生成环境

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公钥,需要转换。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`openssl`是一个强大的工具集,用于处理加密、解密、数据认证等操作。解析PKCS#8私钥文件就是其中一个常见的应用。 ### PKCS#8简介 PKCS#8是一种公钥密码系统的密钥封装标准,它允许将公钥私钥及相关的属性打包在一个单一的、易于管理的数据结构中。这使得密钥可以安全地存储和传输。PKCS#8文件通常包含了一个密钥及其使用上下文信息,例如密钥的算法、长度以及是否是用于加密还是数字签名等。 ### 使用 OpenSSL 解析 PKCS#8 私钥文件 当你需要从一个PKCS#8私钥文件中提取出私钥并使用它进行后续的操作(如签名、解密等),你可以使用`openssl`的命令行工具。以下是一些基本步骤: #### 步骤 1: 确保已安装 OpenSSL 首先确认你的系统上已经安装了`openssl`工具。如果未安装,可以在相应的包管理系统(如apt、yum、brew等)中搜索并安装。 #### 步骤 2: 使用 `openssl pkcs8` 命令解析 PKCS#8 文件 假设你有一个名为 `my_private_key.pkcs8` 的PKCS#8私钥文件,并且希望将其转换成PEM格式以便更直观地查看其内容,可以使用以下命令: ```bash openssl pkcs8 -in my_private_key.pkcs8 -outform PEM -out my_private_key.pem ``` 这里使用的 `-in` 参数指定输入的PKCS#8文件路径,`-outform PEM` 表示输出格式为PEM,最后的 `-out` 参数指定了输出文件的保存位置。 如果只需要读取其中的内容而无需修改输出格式,则可以直接通过管道查看: ```bash cat my_private_key.pkcs8 | openssl pkcs8 -nocrypt ``` 上述命令中的 `-nocrypt` 参数意味着不解密密钥。 ### 相关问题: 1. **如何生成一个新的 PKCS#8 私钥文件?** 可以使用 `openssl genpkey` 和 `openssl pkeyutl` 组合来创建新的私钥文件。 2. **如何使用 OpenSSL 进行私钥加密?** 使用私钥保护敏感信息时,可以先生成密钥对,然后使用 `openssl rsa -in private_key.pem -outform DER -out encrypted_key.der` 来加密私钥。 3. **解析 PKCS#8 私钥文件时遇到错误怎么办?** 错误可能是由多种原因导致的,如权限问题、文件损坏或内容不符合预期格式等。检查日志输出或尝试提供更详细的错误消息可以帮助定位问题。同时,确保提供的文件路径正确无误也是一个重要的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值