jks获取公钥私钥

openssl

生成私钥

genrsa -out rsa_private_key.pem

生成公钥

rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

生成JKS

keytool -genkey -alias jwt -keyalg RSA -keysize 1024 -keystore jwt.jks -validity 365
keytool -genkey -alias jwt -keyalg RSA -keysize 1024 -keystore jwt.jks -validity 365 -storepass 123456
//keytool -genkey -alias jwt -keyalg RSA -keysize 1024 -keystore jwt.jks -validity 365
// -alias <alias>                  要处理的条目的别名
// -keyalg <keyalg>                密钥算法名称
// -keysize <keysize>              密钥位大小
// -sigalg <sigalg>                签名算法名称
// -destalias <destalias>          目标别名
// -dname <dname>                  唯一判别名
// -startdate <startdate>          证书有效期开始日期/时间
// -ext <value>                    X.509 扩展
// -validity <valDays>             有效天数
// -keypass <arg>                  密钥口令
// -keystore <keystore>            密钥库名称
// -storepass <arg>                密钥库口令
// -storetype <storetype>          密钥库类型
// -providername <providername>    提供方名称
// -providerclass <providerclass>  提供方类名
// -providerarg <arg>              提供方参数
// -providerpath <pathlist>        提供方类路径
// -v                              详细输出
// -protected                      通过受保护的机制的口令

如何从jks文件中导出公私钥

从JKS转换到PKCS12

keytool -importkeystore -srckeystore jwt.jks -destkeystore jwt.p12 -srcstoretype JKS -deststoretype PKCS12

**p12证书全称是PKCS#12(Public-Key Cryptography Standards:公钥加密标准)

p12证书包含了私钥、公钥并且有口令保护,在证书泄露后还有最后一道保障——证书口令,不知道正确的证书口令无法提取秘钥。

  1. 利用OpenSSL命令提取

提示输入证书口令后可得到原始秘钥rsa_origin.key,但仅有该秘钥是没用的,必须再从其中提取出公钥和私钥。

openssl pkcs12 -in jwt.p12 -nocerts -nodes -out rsa_origin.key
  1. 以RSA加密方式输出私钥

    openssl rsa -in rsa_origin.key -out rsa_pkcs1.pem
    

​ 此处注意,该秘钥为PKCS#1格式,在PHP下可直接使用,若为java环境,我们一般需要使用PKCS#8格式私钥,那么再来做一次转换。

openssl pkcs8 -topk8 -inform PEM -in rsa_pkcs1.pem -outform PEM -out rsa_private_pkcs8.pem -nocrypt
  1. 从原始秘钥提取RSA公钥

    openssl rsa -in rsa_origin.key -pubout -out rsa_public_key.pem
    
posted @ 2023-01-18 22:03  Herenwei_Wayne  阅读(1631)  评论(0编辑  收藏  举报