使用 OpenSSL 生成 RSA 公私钥

生成 RSA 公私钥

1、生成 RSA 私钥

openssl genrsa -out rsa_2048_priv.pem 2048

注意:OpenSSL3.0及以后的版本在使用上述命令生成 RSA 私钥时,默认格式为PKCS8格式。

2、生成 RSA 公钥

openssl rsa -in rsa_2048_priv.pem -pubout -out rsa_2048_pub.pem

3、将 RSA 私钥转成PKCS8格式(如果使用的 OpenSSL 版本 > = 3.0则可跳过此步)

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

一般来说,现在主流的几大编程语言基本都支持 PKCS8 格式,如果某些小众编程语言只支持PKCS1格式,那么可以通过下面的操作将 PKCS8 格式转换成 PKCS1 格式。

openssl rsa -in rsa_2048_priv_pkcs8.pem -out rsa_2048_priv_pkcs1.pem

生成证书和私钥

openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -config "D:\Packages\openssl\share\openssl.cnf" -days 750 -out cert.crt -subj "/C=CN/ST=省份拼音/L=市拼音/O=公司英文名称/OU=公司英文名称/CN=域名/emailAddress=公司邮箱"
openssl x509 -in cert.crt -outform der -out cert.der
openssl x509 -inform der -in cert.der -out cert.pem
openssl x509 -outform der -in cert.pem -out cert.cer
openssl pkcs12 -export -out my.pfx -inkey rsa_private.key -in cert.crt

说明:此处的-newkey是选项的名称,不能修改,下面的也是一样。

生成 cert 和 pfx 文件

openssl req -newkey rsa:1024 -nodes -keyout rsa_private.key -x509 -config "D:\Packages\openssl\share\openssl.cnf" -days 750 -out cert.cer -subj "/C=CN/ST=省份拼音/L=市拼音/O=公司英文名称/OU=公司英文名称/CN=域名/emailAddress=公司邮箱"
openssl pkcs12 -export -in cert.cer -inkey rsa_private.key -out my.pfx

生成第三方支付机构支持的 cert 和 pfx 文件

1. 生成不含密码保护的私钥:

openssl genrsa -out private-rsa.key 1024
或
openssl genrsa -out private-rsa.key 2048

2. 生成证书

openssl req -new -x509 -key private-rsa.key -days 750 -out public-rsa.cer -config "D:\Packages\openssl\share\openssl.cnf"

3. 生成 PKCS12 格式

openssl pkcs12 -export -in public-rsa.cer -inkey private-rsa.key -out 1.pfx

4. 提取密钥对(如果 pfx 证书已加密,会提示输入密码。)

openssl pkcs12 -in 1.pfx -nocerts -nodes -out 1.key

5. 从密钥对提取私钥

openssl rsa -in 1.key -out 1_pri.key

6. 从密钥对提取公钥

openssl rsa -in 1.key -pubout -out 1_pub.key

7. 因为 RSA 算法使用的是 pkcs8 模式补足,需要将提取的私钥转换成 pkcs8 格式

openssl pkcs8 -in 1_pri.key -out 1_pri_pkcs8.pem -outform pem -nocrypt -topk8

将 pfx 转成一个 cer

openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes

第三方支付机构的 cert 证书转换成 pem 公钥

openssl x509 -inform pem -in 99billcert.cer -pubkey -noout > 99billcert_publickey.pem
Tags: openssl rsa