SpringCloud可以在本地进行预处理的解密,需要在JVM添加JCE扩展
1. 下载JCE 安装对应的java版本
- 下载地址
- 下载后,将
local_policy.jar
和US_export_policy.jar
分别放到
C:\Java\jdk1.8\jdk1.8.0_45\jre\lib\security
C:\Java\jdk1.8\jre1.8.0_45\lib\security
两个目录下
local_policy.jar
和 US_export_policy.jar
加解密的策略文件
2. 使用keytool生产证书
2.1 keytool 是java 用于管理密钥和证书的工具
其功能包括:
- 创建并管理密钥
- 创建并管理证书
- 作为CA 为证书授权
- 导入导出证书
主要格式:
- keytool 采用 keystore 文件来存储密钥及证书,其中可包括私钥、信任证书;
- keystore 文件主要使用 JKS格式(也可支持其他格式),带密钥存储;其中私钥的存储也有独立的密码;
2.2 命令
具体可参照:数字证书中keytool命令使用说明
说明:命令中文部分可自行定义
例:
keytool -genkeypair -alias 实体别名(包括证书私钥) -keyalg RSA -keysize 2048 -validity 3650 -dname “CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US” -keypass 私钥加解密密码 -keystore 证书名称.jks -storepass 文件存储密码
若不指定目录,则生产的证书默认放在当前目录
命令参数说明:
-alias: 实体别名(包括证书私钥)
-keyalg: 指定密钥的算法
-keysize: 指定密钥长度
-validity: 指定创建的证书有效期多少天(默认为90天)
-dname: 指定证书拥有者信息
-keypass: 指定别名条目的密码
-keystore: 指定密钥库的名称(就像数据库一样的证书库,可以有很多个证书,cacerts这个文件是jre自带的,也可以使用其它文件名字,如果没有这个文件名字,它会创建这样一个)
-storepass: 指定密钥库的密码
3. 修改配置文件
将生产的证书***.jks
放到项目resource
下,bootstrap.yml
增加以下配置:
encrypt:
key-store:
location: ***.jks
password: ***
alias: ***
secret: ***
4. 加密和解密
4.1 查询KEY状态
命令:
curl http://127.0.0.1:8080/encrypt/status
4.2 encrypt 加密
命令:
curl -X POST http://127.0.0.1:8080/encrypt -d KEY
4.3 decrypt 解密
命令:
curl -X POST http://127.0.0.1:8080/encrypt -d AQA1RbeAy…
5. 修改项目中原来使用的明文密码
修改完成之后重启项目即可