数据库密码直接写在配置中,对运维安全来说,是一个很大的挑战。可以使用Druid为此提供一种数据库密码加密的手段ConfigFilter。
如果项目已经集成druid,只需按要求配置即可。
1、执行命令加密数据库密码
找到druid-1.2.20.jar所在的文件夹目录,执行cmd命令,然后执行下面的命令生成数据库密码的密文和秘钥对。
java -cp druid-1.2.20.jar com.alibaba.druid.filter.config.ConfigTools 数据库密码
命令最后的参数一定要输入你的数据库密码,版本号视情况而定,我们这边使用的是druid-1.2.20版本。
命令输出的是加密后的结果,主要关注publicKey和password。
2、配置数据源
2.1、password属性修改成加密结果里的password值,即数据库密码的密文。
password: KWddMcILCrnt6GXmhct33cgL+paOLt7TE0c2DIzEhQi3/MP+2ke2LfbHfgpvccP2AUX8GgzCl4iMNF4o/yypQg==
2.2、启用过滤器configFilter
filter:
config:
# 启用过滤器configFilter,config下面只有enabled一个属性
enabled: true
2.3、配置config下面相关属性
config.decrypt为加解密开关
config.decrypt.key为解密公钥
connection-properties: config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKOAuSzGYufWFSDIpd3A5Mmv1UxAhcNT5hUCl8RLxtSXR+3H5r4T26OD+99VqPyF+EqwDJptmJZz4sDcK7fvANsCAwEAAQ==
2.3、启动应用程序测试验证加密结果
如若忘记密码可以使用工具类解密(传入生成的公钥+密码)
public static void main(String[] args) throws Exception {
String password = ConfigTools.decrypt(
"MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKOAuSzGYufWFSDIpd3A5Mmv1UxAhcNT5hUCl8RLxtSXR+3H5r4T26OD+99VqPyF+EqwDJptmJZz4sDcK7fvANsCAwEAAQ==",
"KWddMcILCrnt6GXmhct33cgL+paOLt7TE0c2DIzEhQi3/MP+2ke2LfbHfgpvccP2AUX8GgzCl4iMNF4o/yypQg==");
System.out.println("解密密码:" + password);
}
标签:加密,数据库,druid,密码,password,config
From: https://www.cnblogs.com/shigzh/p/17937994