SpringCloud配置中心屬性加解密(對稱加解密)
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. 修改項目中原來使用的明文密碼
修改完成之後重啓項目即可