加密解密
在项目中有些敏感的配置属性,如数据库用户名、密码等,都应该进行加密存储
需要下载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
|