分类 OpenSSL 下的文章

私钥转换

如果您想了解 PKCS#1 格式私钥和 PKCS#8 私钥间的区别,您可以访问我们之前发布的文档《私钥头 "BEGIN RSA PRIVATE KEY" 和 "BEGIN PRIVATE KEY"的区别》

我们需要借助Openssl命令行工具,完成下列互转:

PKCS8格式私钥再转换为PKCS1格式

openssl rsa -in pkcs8.pem -out pkcs1.pem

PKCS1私钥转换为PKCS8

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

公钥转换

从pkcs1私钥中生成pkcs8公钥

openssl rsa -in private.pem -pubout -out public.pem

从pkcs8私钥中生成pkcs8公钥

openssl rsa -in pkcs8.pem -pubout -out public_pkcs8.pem

pkcs8公钥转pkcs1公钥

openssl rsa -pubin -in public.pem -RSAPublicKey_out

pkcs1公钥转换为pkcs8公钥

openssl rsa -RSAPublicKey_in -in pub_pkcs1.pem -pubout

此文档整理来自《openssl RSA密钥格式PKCS1和PKCS8相互转换》

未加密的私钥以 PKCS#8 格式文本存储, 将包含以下头部和尾部标签:

-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----

里面的 BASE64 的编码的 DER 信息包含以下信息结构:

PrivateKeyInfo ::= SEQUENCE {
  version         Version,
  algorithm       AlgorithmIdentifier,
  PrivateKey      BIT STRING
}

AlgorithmIdentifier ::= SEQUENCE {
  algorithm       OBJECT IDENTIFIER,
  parameters      ANY DEFINED BY algorithm OPTIONAL
}

- 阅读剩余部分 -