我们在配置文件中往往都会配置数据库的密码等敏感信息,而这些信息可能只作为项目启动用,并不想直观的透漏给开发人员,于是,配置加密便起了作用。我们目前项目中是spring cloud
框架,下面记录下我的配置方法:
Spring Cloud有一个用于本地解密属性值的环境预处理器。
它遵循与配置服务器相同的规则,并且通过encrypt.*
使加密具有相同的外部配置。
因此,您可以使用{cipher}*
形式的加密值,并且,只要有一个有效的密钥,它们就会在主应用程序上下文获得环境设置之前解密。
要在应用程序中使用加密特性,您需要在类路径中包含Spring Security RSA (Maven协调:“org.springframework.security: Spring - Security - RSA”),并且还需要JVM中完整的JCE扩展。
如果由于“非法密钥大小”而出现异常,并且使用Sun的JDK,则需要安装Java Cryptography Extension (JCE) Unlimited Strength governance Policy Files。详情请参阅以下方式:
- 下载JCE,如jdk1.8
https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
- 将文件解压缩到JDK/jre/lib/security文件夹中,以支持您使用的jre/ JDK x64/x86的任何版本。
步骤
-
下载JCE,下载完成后,可以看到
,我们需要将这里的两个jar包拷贝到我们的jdk安装目录下,我的是
%JAVA_HOME%\jre\lib\security
,覆盖该目录下原有的文件。 -
配置中心设置密钥对,注意,一定要在
bootstrap.yml
中,如
encrypt: key: haoma # 设置对称秘钥
-
测试:
http://192.168.1.236:8010/encrypt/status
,url为配置中心的url,如果出现
则环境搭建成功。 -
获取加密信息
-
配置加密信息,一定要以
{cipher}
+密文配置
datasource:
url: jdbc:mysql://192.168.1.236:3306/hm_number?characterEncoding=UTF-8&useSSL=false
username: tkuser
password: '{cipher}c25add243f559fb5601a23fdb65bba9aa9efa8602ea9366523271aa811b1382a'
6.测试解密