生成JWT的RSA非对称加密秘钥
非对称加密算法需要两个密钥:公开密钥(publickey
:简称公钥)和私有密钥(privatekey
:简称私钥)。公钥与私钥是一对,如果用私钥对数据进行加密,只有用对应的公钥才能解密。
文件使用JDK
自带的 keytool
工具生成。
一、生成秘钥证书
- 首先看一下
keytool
命令下的参数。
需要查询某个命令下的参数,可以在该命令后面添加 -h
查询。例如:查询 -genkeypair
下面的参数。keytool -genkeypair -h
。
- 生成密钥证书文件,每个证书包含公钥和私钥, 执行以下命令
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天 )
详细参数可以参考: https://www.cnblogs.com/benio/archive/2010/09/15/1826990.html
打开DOS
命令窗口输入命令后就生成了,文件保存在打开DOS命令的目录下,注意:该目录不能有中文和空格,避免其他错误产生。
二、获取公钥
获取公钥之前需要安装OpenSSL
,OpenSSL
是一个加解密工具包,可以使用 OpenSSL
来获取公钥。
2.1、下载 OpenSSL
下载地址:http://slproweb.com/products/Win32OpenSSL.html
2.2、安装
2.3、配置环境变量
配置 OpenSSL
的环境变量,需要在 OpenSSL
的安装目录 \bin
。我安装的 \bin
在 D:\OpenSSL-Win64\bin
2.4、获取公钥
查看 -list
参数。
重新打开DOS命令行窗口,进入刚才生成的私钥所在的目录。
注意:这里要求需要输入秘钥库口令,这个口令在生成私钥的命令中设置的那个 -storepass
的值就是秘钥库口令。
keytool -list -rfc --keystore oauth2.jks | openssl x509 -inform pem -pubkey
参数解析
-list:列出密钥库中的条目
-rfc:以RFC样式输出
–keystore:秘钥库名称
将生成的公钥创建一个 txt
文本存放即可。