使用jboss JNDI方式加密数据库连接密码
部门由于进行安全检查,需要对数据库连接明文密码进行加密,具体操作过程编写了文档。
1.创建Jboss module(配置dameng数据库后者oracle、mysql等数据库连接中间件)
- 创建module目录
在${jboss_home}\modules\目录下新建com\dameng\main目录
- 创建module.xml文件,文件内容为:
2.将dameng jdbc支持包拷贝到{jboss_home}\modules\目录下新建com\dameng\main目录下
3. 修改jboss standalone.xml
- 配置数据库驱动
Module属性注意与上述配置的moudule.xml中的name属性一致
- 生成datasource
在datasources标签下增加datasource标签:
注意jndi-name将在spring-jndi方式配置数据库时作为jndi name属性使用,在pool标签下可以配置数据库连接池的内容,在security标签下配置数据库的用户名和连接的密码,后续进行加密。
4、加密连接密码
- 使用工具加密密码
Windows下:
Java -cp F:\jboss\jboss-as-sheng\modules\org\picketbox\main\picketbox-4.0.7.Final.jar;F:\jboss\jboss-as-sheng\modules\org\jboss\logging\main\jboss-logging-3.1.0.GA.jar org.picketbox.datasource.security.SecureIdentityLoginModule lcwkd123123
linux下:
java -cp F:\jboss\jboss-as-sheng\modules\org\picketbox\main\picketbox-4.0.7.Final.jar;F:\jboss\jboss-as-sheng\modules\org\jboss\logging\main\jboss-logging-3.1.0.GA.jar org.picketbox.datasource.security.SecureIdentityLoginModule lcwkd123123
使用jboss自带的pickebox下的SecureIdentityLoginModule类进行加密,它采用的时blowfish的加密算法,属于对称加密的一种(没有公、私钥)。注意运行路径的正确,windows下与linux下的命令分隔符不同,windows下是“;”,而linux下是“:”。加密的后的密文为:30a64b3a67e66f00d0cbc8eed84e75f5,该密文可重复多次使用,密文的生成与加密密码和加密的路径等相关。
5.增加密码安全认证选项
在<security-domains>标签下新增security-domain子标签
再进行将明文密码进行替换
这样jboss进行读取jndi会将加密过的密文进行正确的解密,以生成datesource。
6.使用Spring Jndi 方式生成datasource
修改spring-context.xml下的
其中jndiname为以上在standalone.xml中配置的datasource标签中的jndi-name,对应起来。