0%

配置属性加密解密

加密解密

在项目中有些敏感的配置属性,如数据库用户名、密码等,都应该进行加密存储

需要下载jdk的JCE,下载之后放到JAVA_HOME下的lib中

对称加密

1
2
3
4
spring:
datasource:
username: root
password: '{cipher}851a6effab6619f43135a714061f4602be0251b73b56b0451a7e268c880daea3'

加解密端点

  • 加密: curl $CONFIG_URL/encrypt-d想要加密的内容
  • 解密: curl $CONFIG_URL/decrypt-d 想要解密的密文

非对称加密

使用keytool来创建一个Key Store

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
>keytool -genkeypair -help
keytool -genkeypair [OPTION]...

生成密钥对

选项:

-alias <alias> 要处理的条目的别名
-keyalg <keyalg> 密钥算法名称
-keysize <keysize> 密钥位大小
-sigalg <sigalg> 签名算法名称
-destalias <destalias> 目标别名
-dname <dname> 唯一判别名
-startdate <startdate> 证书有效期开始日期/时间
-ext <value> X.509 扩展
-validity <valDays> 有效天数
-keypass <arg> 密钥口令
-keystore <keystore> 密钥库名称,指定密钥库的路径及名称,若密钥库不存在则创建。若不指定则默认在操作系统的用户目录下生成一个".keystore"的文件
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型,如果不指定,默认是JKS
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
-protected 通过受保护的机制的口令

使用 "keytool -help" 获取所有可用命令
1
keytool -genkeypair -alias mytestkey -keyalg RSA -keystore server.jks -keypass keypass -storepass storepass

将生成的jks文件复制到classpath下

在bootstrap.yml中添加配置

1
2
3
4
5
6
encrypt:
key-store:
location: classpath:server.jks
alias: mytestkey
password: storepass
secret: keypass

欢迎关注我的其它发布渠道