使用 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