生成JWT的RSA非对称加密秘钥

非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用私钥对数据进行加密,只有用对应的公钥才能解密。

文件使用JDK自带的 keytool工具生成。

一、生成秘钥证书

  • 首先看一下 keytool命令下的参数。

需要查询某个命令下的参数,可以在该命令后面添加 -h查询。例如:查询 -genkeypair下面的参数。keytool -genkeypair -h

python非对称密钥加密用法 非对称密钥如何生成_库文件

python非对称密钥加密用法 非对称密钥如何生成_库文件_02

  • 生成密钥证书文件,每个证书包含公钥和私钥, 执行以下命令
keytool -genkeypair -alias oauth2 -keyalg RSA -keysize 1024 -keypass oauth2 -keystore oauth2.jks -storepass oauth2 -validity 3650

参数解析

-genkeypair:生成密钥对

-alias:证书的别名。在一个证书库文件中,别名是唯一用来区分多个证书的标识符

-keyalg:密钥的算法,非对称加密的话就是RSA

-keysize:密钥长度,一般都是1024

-keypass:密钥口令

-storepass:密钥库口令

-keystore:证书库文件保存的位置和文件名。如果路径写错的话,会出现报错信息。如果在路径下,证书库文件不存在,那么就会创建一个

-validity:证书的有效期,单位是天。比如36500的话,就是100年 (默认为90天 )

详细参数可以参考:

打开DOS命令窗口输入命令后就生成了,文件保存在打开DOS命令的目录下,注意:该目录不能有中文和空格,避免其他错误产生。

python非对称密钥加密用法 非对称密钥如何生成_python非对称密钥加密用法_03

python非对称密钥加密用法 非对称密钥如何生成_参数解析_04

二、获取公钥

获取公钥之前需要安装OpenSSLOpenSSL 是一个加解密工具包,可以使用 OpenSSL 来获取公钥。

2.1、下载 OpenSSL

下载地址:http://slproweb.com/products/Win32OpenSSL.html

python非对称密钥加密用法 非对称密钥如何生成_库文件_05

python非对称密钥加密用法 非对称密钥如何生成_库文件_06

2.2、安装

python非对称密钥加密用法 非对称密钥如何生成_库文件_07

python非对称密钥加密用法 非对称密钥如何生成_库文件_08

python非对称密钥加密用法 非对称密钥如何生成_非对称加密_09

python非对称密钥加密用法 非对称密钥如何生成_python非对称密钥加密用法_10

python非对称密钥加密用法 非对称密钥如何生成_参数解析_11

python非对称密钥加密用法 非对称密钥如何生成_非对称加密_12

python非对称密钥加密用法 非对称密钥如何生成_python非对称密钥加密用法_13

2.3、配置环境变量

配置 OpenSSL的环境变量,需要在 OpenSSL的安装目录 \bin 。我安装的 \binD:\OpenSSL-Win64\bin

python非对称密钥加密用法 非对称密钥如何生成_库文件_14

2.4、获取公钥

查看 -list参数。

python非对称密钥加密用法 非对称密钥如何生成_库文件_15

重新打开DOS命令行窗口,进入刚才生成的私钥所在的目录。

注意:这里要求需要输入秘钥库口令,这个口令在生成私钥的命令中设置的那个 -storepass的值就是秘钥库口令。

keytool -list -rfc --keystore oauth2.jks | openssl x509 -inform pem -pubkey

参数解析

-list:列出密钥库中的条目

-rfc:以RFC样式输出

–keystore:秘钥库名称

python非对称密钥加密用法 非对称密钥如何生成_非对称加密_16

将生成的公钥创建一个 txt文本存放即可。