macOS 生成 RSA 公钥和私钥
如果你没有安装 openssl
,请先使用 brew 安装它。
生成 RSA 私钥
在 macOS 终端输入下面命令,会生成1024位的私钥,如下:
1 | openssl genrsa -out rsa_private.pem 1024 |
执行成功后,在当前目录会生成 rsa_private.pem
文件了。
注意:这里生成的是 PKCS1
格式的文件,也称之为传统的私钥格式。
生成 RSA 公钥
得到私钥后,执行如下命令可以得到公钥,命令如下:
1 | openssl rsa -in rsa_private.pem -out rsa_public.pem -pubout |
执行成功后,在当前目录会生成 rsa_public.pem
的文件,这个就是公钥。
格式转换
有些后端服务需要
PKCS8
格式的密钥,可以使用 openssl 工具把PKCS1
和PKCS8
进行互转。
PKCS
全称是 Public-Key Cryptography Standards
,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准。
把 RSA 私钥转 PKCS1
转换为 PKCS8
格式,执行如下:
1 | openssl pkcs8 -topk8 -inform PEM -in rsa_private.pem -outform PEM -nocrypt -out rsa_private_pkcs8.pem |
把 RSA 私钥 PKCS8
格式转换为 PKCS1
格式,执行如下:
1 | openssl rsa -in rsa_private_pkcs8.pem -out pkcs1.pem |
以上生成的 RSA(pem) 文件,可以使用 vim、vscode 等文本编辑器打开查看。
无论是 PKCS1
还是 PKCS8
,它们都是 PEM 编码存储的格式。
PEM 格式
PEM 格式既是对 DER 编码转码为 Base64
字符格式,通过解码,将会还原为 DER 格式。即 PEM 是建立在 DER 编码之上的一种格式。
总之,PEM 是明文格式,可以包含证书或者是密钥,其内容通常是以类似 —–BEGIN …—–
开头,以 —–END …—–
为结尾的这样的格式,如下示例:
1 | -----BEGIN RSA PRIVATE KEY----- |
以下是证书文件名称,来自维基百科 X.509 的截图。
要始终保持学习的激情~